经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » 编程经验 » 查看文章
python array的应用
来源:cnblogs  作者:爬树的猪  时间:2018/10/8 8:49:58  对本文有异议

数组的应用

  应用1:洗牌

     描述:洗牌后每个元素随机出现在每个位置,且概率相等

     方法1:调用库函数

  1. import random
  2. def shuffle_system(cards):
  3. random.shuffle(cards)

 

    方法2:

  1. def shuffle_correct(cards):
  2. for i in range(len(cards)):
  3. randomi = i+ random.randint(0,len(cards)-i-1)
  4. card[i],cards[randomi] = cards[randomi],card[i]
  5. #对方法二的解释:
  6. #首先在0 - n-1下标中产生一个随机下标,交换第一个和和随机下标,所以任何数字出现在第一个位置的概率是1/n
  7. #第二次时在1- n-2 中随机产生下标,产生1- n-2 随机数的概率时1/n-1,但是第二次抽中第一次没有选中这个数的概率时n-1/n
  8. #所以第二次出现在第二个位置的概率还是1/n,
  9. #依次类推,所以每个数出现的概率都是1/n,就能完成对一个数组进行洗牌的操作

 

  应用二:计算质数的个数

    描述:给定一个正整数n,计算出小于等于n的质数有多少个。比如17,则返回7,因为小于等于7的质数有2,3,5,7,11,13,17

  1. def count_prime(n):
  2. count=0;
  3. for i in range(2,n+1):
  4. for j in range(2 ,i):
  5. if i % j == 0:
  6. break;
  7. else:
  8. count = count + 1;
  9. return count

 

  应用三:证明哥德巴赫的猜想:

    描述:任一大于2的偶数,都可表示成两个质数之和。

  1. #primes函数和应用二类似,只是把所有质数添加到一个list中
  2. def prime(n):
  3. count=0;
  4. primes=[];
  5. for i in range(2,n+1):
  6. for j in range(2 ,i):
  7. if i % j == 0:
  8. break;
  9. else:
  10. primes.append(i)
  11. return primes

 

  1. #采用了双指针的方法来进行移动
  2. def goldbach(n):
  3. primes=prime(n)
  4. begin = 0
  5. end = len(primes)-1
  6. while begin < end:
  7. if primes[begin]+primes[end] > n:
  8. end = end - 1
  9. elif primes[begin]+primes[end] < n:
  10. begin = begin + 1
  11. else:
  12. print("{}={}+{}".format(n,primes[begin],primes[end]))
  13. break

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号