码迷,mamicode.com
首页 > 编程语言 > 详细

python array的应用

时间:2018-10-05 12:12:43      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:[]   n+1   format   移动   库函数   span   函数   ==   产生   

数组的应用

  应用1:洗牌

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

     方法1:调用库函数

import random
def shuffle_system(cards):
    random.shuffle(cards)

 

    方法2:

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

 

  应用二:计算质数的个数

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

def count_prime(n):
    count=0;
    for i in range(2,n+1):
        for j in range(2 ,i):
            if i % j == 0:
                break;
        else:
            count = count + 1;
    return count

 

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

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

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

 

#采用了双指针的方法来进行移动
def goldbach(n):
    primes=prime(n)
    begin = 0
    end = len(primes)-1
    while begin < end:
        if primes[begin]+primes[end] > n:
            end = end - 1
        elif primes[begin]+primes[end] < n:
            begin = begin + 1
        else:
            print("{}={}+{}".format(n,primes[begin],primes[end]))
            break

 

python array的应用

标签:[]   n+1   format   移动   库函数   span   函数   ==   产生   

原文地址:https://www.cnblogs.com/zhanyifan/p/9744150.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!