ℌ𝔢𝔶𝔦𝔱𝔰𝔅𝔩𝔞𝔡𝔢ℜ𝔲𝔫𝔯
2021-07-28T12:47:59+00:00
如果算1-1000里任两个数的四则运算,共有1000*1000*4=4000000条公式,如果让计算机计算随机数4000000次,得到不重复的数,好像,我的电脑还没那么快算出来
问题是把有序的4000000条公式随机分布使之看起来像随机生成一样,老哥们尽管打码,常见编程语言我都看得懂
不是随机挑选两个数运算吗,又不是全部算好了再随机挑一个结果
不是,你有多看不起你家电脑
这种量级随便算好吗[img]http://img.nga.178.com/attachments/mon_201209/14/-47218_5052bc4cc6331.png[/img]
roll 1,4000000
再拆成两个数
一般是这样的
是我理解有问题吗?四个符号编个数组,然后直接随机两个数加一个符号不就得了?两行代码的事啊?
你是要算啥?我怎么没看明白,为啥要算这玩意,有前提提要吗?
就竞赛1秒的时间 我记得几千万次是不行的 几百万次就差不多了 超过这个上限就要换一个方法了
Reply to [pid=538766409,27936461,1]Reply[/pid] Post by [uid=39720491]卡皮酱酱酱酱[/uid] (2021-08-05 20:58)你告诉我怎样排列4000000条公式使之随机分布?随便用个语言写,java c# python php c 我都看得懂
[quote][pid=538766807,27936461,1]Reply[/pid] Post by [uid=60842511]humq1992[/uid] (2021-08-05 20:59):
单线程 13秒,8线程 妥妥1秒内了;
[img]https://img.nga.178.com/attachments/mon_202108/05/-7Q174-8u4dK2nT3cSre-nc.jpg[/img][/quote]随机的啊。。
[quote][pid=538767457,27936461,1]Reply[/pid] Post by [uid=60266803]Jeason_57656[/uid] (2021-08-05 21:02):
是我理解有问题吗?四个符号编个数组,然后直接随机两个数加一个符号不就得了?两行代码的事啊?[/quote]随机?不重复
本质上还是批量生成百万级的随机数
你可以搜一下用SQL实现,大概几分钟就能做到
import random
s = []
op = ['+', '-', '*', '/']
for i in xrange(1000):
for j in xrange(1000):
for k in xrange(4):
s.append('%d %s %d = ?' % (i, op[k], j))
random.shuffle(s)