随机选择的想法

时间:2009-12-26 21:06:11

标签: python random

我正在考虑提供一套或多套介绍性讲座,用Python和相关的科学工具向我所在部门的人介绍,就像我去年夏天曾做过的那样py4science @ UND

为了使会议更有趣并引起更多关注,我通过以下方式向其中一位幸运的观众提供了两个Python学习资料:

1-)获取姓名并使用数字进行分配,然后从指定的字典中选择第一个作为获胜者。

import random 
lucky = {1:'Lucky1',...}
random.choice(lucky.keys())

2-)类似于前一个但是字典中的弹出项目,因此最后一个成为最幸运的。

import random 
lucky = {1:'Lucky1',...}
lucky.pop(random.choice(lucky.keys())) 

现在,我至少会想到一个本质上具有随机性的想法,并展示一个有用的语言功能,帮助我在其中一个会话结束时制作更有趣的彩票时间。

3 个答案:

答案 0 :(得分:3)

卡也是流行(和熟悉的!)机会游戏的来源。 也许你可以证明生成,随机播放和采样卡是多么容易:

#!/usr/bin/env python
import random
import itertools

numname={1:'Ace',11:'Jack',12:'Queen',13:'King'}
suits=['Clubs','Diamonds','Hearts','Spades']
numbers=range(1,14)
cards=['%s-%s'%(numname.get(number,number),suit)
       for number,suit in itertools.product(numbers,suits)]
print(cards)
random.shuffle(cards)
print(cards)
hand=random.sample(cards,5)
print(hand)

答案 1 :(得分:1)

对于中等人群来说,随机数字最可爱的用途之一就是寻找周期。我将描述物理方法,然后进行一些探索。 Python代码相当简单。

从你的一群约100人开始,他们的名字放在一个碗里的纸上。每个人都在碗上下来并随意拿一张纸。每个人都会去找那个名字的人。这导致群体以各种尺寸聚集在一起。并不总是人们期望的。

例如,如果爱丽丝选择鲍勃,鲍勃选择查理,而查理选择爱丽丝,那么这三个人将最终进入他们自己的丛中。对于一些团体,让人们与他们的比赛联手,看看每个人都被这种方式和那样拉。同时了解匹配如何创建链或丛。

现在编写软件来观察丛数。比较团结,例如,“最大的丛有多少人不到一半”?例如,对于N个学生,平均1 / N将绘制自己的名字。

你需要代码吗?

答案 2 :(得分:0)

计算Pi总是很有趣;-)

import random

def approx_pi( n ):
    # n random (x,y) pairs (as a generator)
    data = ( (random.random(),random.random()) for _ in range(n) )
    return 4.0*sum( 1 for x,y in data if x**2 + y**2 < 1 )/n

print approx_pi(100000)