Python中的乐透画模拟 问题:我正在尝试创建一个数据帧,其中有n个乐透抽奖模拟,*解决方案:为低球数生成从1到70的随机整数,并将每个迭代附加到一个数据帧。从1到25的powerball也有类似的过程。最后,合并两个数据帧 输出:具有5k模拟的数据帧 帮助:有没有更像蟒蛇的方法来达到同样的效果
使用numpy的Python中的乐透画模拟 问题:我正在尝试创建一个数据帧,其中有n个乐透抽奖模拟,*解决方案:为低球数生成从1到70的随机整数,并将每个迭代附加到一个数据帧。从1到25的powerball也有类似的过程。最后,合并两个数据帧 输出:具有5k模拟的数据帧 帮助:有没有更像蟒蛇的方法来达到同样的效果,python,pandas,numpy,for-loop,random,Python,Pandas,Numpy,For Loop,Random,使用numpy的随机模块: n_draws = 5000 lowballs = np.random.choice(np.arange(1, 71), size=(n_draws, 6)) df = pd.DataFrame(lowballs, columns=[f'lowball_{i}' for i in range(1,7)]) df['powerball'] = np.random.randint(1, 26, n_draws) 结果: lowball_1 lowball_2
随机
模块:
n_draws = 5000
lowballs = np.random.choice(np.arange(1, 71), size=(n_draws, 6))
df = pd.DataFrame(lowballs, columns=[f'lowball_{i}' for i in range(1,7)])
df['powerball'] = np.random.randint(1, 26, n_draws)
结果:
lowball_1 lowball_2 lowball_3 lowball_4 lowball_5 lowball_6 powerball
0 41 61 66 63 50 1 17
1 41 19 19 54 65 2 16
2 55 32 16 20 14 2 12
3 69 4 58 53 10 15 8
4 45 2 49 7 46 14 23
好吧,按照我的想法以一种蟒蛇式的方式写: 我想按需生成一个彩票选择,然后在“数据帧”中获得所需的数量。编写基础知识,将其向下推,并用python表达问题:
import random
def lottery_dataframe(number_required=5000):
return (lottery_pick() for _ in range(number_required))
def lottery_pick():
return (*(lottery_digit_pick() for _ in range(6)), powerball_digit_pick())
def powerball_digit_pick():
return random.randint(1, 25)
def lottery_digit_pick():
return random.randint(1, 70)
请注意,这仅在需要时生成数据。要查看生成的内容,您可以将其包装在列表中,例如
In [1]: list(lottery_dataframe(4))
Out[1]:
[(68, 10, 31, 28, 27, 49, 4),
(26, 68, 24, 12, 62, 21, 19),
(16, 20, 23, 52, 70, 36, 22),
(9, 30, 33, 39, 21, 12, 6)]
我欣赏pythonic语法,尽管它看起来比应该的要长一点。如果我在忘记代码后再回到代码,我希望能够理解它。简洁是好的,但清晰更好。虽然numpy解决方案很好,但我觉得这更像python。虽然它也不太正确-我使用了randint,它将生成多个相同的数字;)
In [1]: list(lottery_dataframe(4))
Out[1]:
[(68, 10, 31, 28, 27, 49, 4),
(26, 68, 24, 12, 62, 21, 19),
(16, 20, 23, 52, 70, 36, 22),
(9, 30, 33, 39, 21, 12, 6)]