![]() |
1
3
我认为这是一个技巧性的问题-使用标准库例程生成数字的明显答案几乎肯定是有缺陷的,如果你想以相同的概率生成每一个可能的10000位数字。。。 如果算法随机数生成器保持 n个 很明显,它可以产生 最多 二 n个 可能有不同的输出序列,因为只有2个 n个 不同的初始配置。 二 三万三千二百一十九 <10分 一万 <2号 三万三千二百二十 ,所以如果你的算法使用的内部状态少于33220位 不可能 生成10个 一万 可能是10000位(十进制)数字。 典型的标准库随机数生成器不会使用这样的内部状态。甚至 Mersenne Twister (我所知道的最常提到的具有大状态的生成器)只保留624个32位字(=19968位)的状态。 |
![]() |
2
1
只是众多方法中的一种。您可以传入要使用的任何字符字符串:
|
![]() |
3
1
无需额外要求,这将起作用:
这将导致无法打印字符和其他不愉快。使用一个ASCII编码器,你可以得到字母,数字和穿孔坚持范围32-126。或者创建一个介于0和94之间的随机数并加上32。不确定他们在这个问题中寻找的是哪一方面。 顺便说一句,不,我不知道头顶的可视范围,我在维基百科上查过了。 |
![]() |
4
0
生成0..9范围内的数字。把它转换成一个数字。把它串起来。重复10000次。 |
![]() |
5
0
我总是喜欢说计算机随机数总是只是伪随机的。无论如何,你最喜欢的语言总是有一个随机库。接下来什么是数字字符串?每个字符值为0-9?好吧,让我们从这个假设开始。因此,我们可以生成0-9之间的字节,偏移量(48)和(int)随机*10(因为随机生成器通常返回浮点)。然后将它们全部放入一个10000长的字符缓冲区并转换为字符串。 |
![]() |
6
0
返回包含10000的字符串
|
![]() |
7
0
我想真正的问题是确定面试官到底想要什么。例如,什么意义上的随机性?不可压缩?在同一算法的多次运行上随机?等。 |
![]() |
8
0
您可以从种子数字列表开始:
然后,使用计数器跟踪最后使用的数字。这将是系统范围的,不应使用系统重置:
接下来,使用一个使用模数来确定“下一个数”的算法:
最后,生成10000个这样的数字。
我相信一个理想的答案会使用更多的质数,但这应该已经足够了。 |
![]() |
Dazcii · 如何找到3个嵌套循环的复杂性 7 年前 |
![]() |
Kodean · Java:循环字符串长度时间复杂性 7 年前 |
![]() |
screeb · 依赖于收敛的算法的大O 7 年前 |
![]() |
f1sh3r0 · 从图中确定渐近增长率 7 年前 |
![]() |
user3487554 · 时间复杂性组合 7 年前 |
|
user6217340 · 大O复杂性 7 年前 |
![]() |
Jawwad Rafiq · 对两个相关循环的复杂性感到困惑? 7 年前 |