有人提出了根据种子值以完全相同的顺序生成随机数的想法,我开始非常认真地考虑如何做到这一点。我们挑战彼此创建一个执行以下操作的应用程序:
根据种子值,每十秒生成一组五个随机数,范围从1到100。生成的数字(使用相同的种子值)应该完全相同并以完全相同的顺序生成,因此如果应用程序运行20秒并且数字为[1,17,2,58,27,83,32]如果重新启动应用程序,则生成这些完全相同的数字,如果提供了相同的种子,则应在20秒后生成这些完全相同的数字,然后生成56,57,4。
这将允许多个客户端基于单个数字种子值生成相同的确切信息。
不幸的是,经过几天我们都失败了,我们完全不知道如何做到这一点。我们甚至不知道这种行为的正确用语是什么,但我称之为“确定性数字生成”
我已经标记了我们为此过期尝试使用的两种语言,希望有人可以帮助我们。这将是一个非常有趣的代码块进行试验,如果我们能找到一种方法,我们甚至会想到通过使用这种策略来改进我们的一些手机游戏的方法。
任何帮助都将受到慷慨的赞赏。
答案 0 :(得分:0)
有说明显性的风险,但在C#中这将是 -
int seed = 12;
Random r = new Random(seed);
for (int n = 0; n < 20; n++)
{
Console.WriteLine("{0}", r.Next(1, 100));
}
只要您使用相同的种子编号,您应该获得相同的列表......
除非我在这里遗漏了一些问题......