【发布时间】:2012-03-01 10:49:46
【问题描述】:
我需要根据多个种子值生成随机数,需要一些关于如何执行此操作的想法。
示例情况:假设您正在编写程序生成的科幻游戏,当玩家飞入某个太阳系时,需要创建行星(大小、类型、资源等)。您有一个游戏 ID,以及该星球的 X、Y、Z 坐标。现在给随机数生成器提供什么?当然,我不能只是将数字相加,因为行星 (1,2,3) 与行星 (3,2,1) 完全相同。程序员要做什么?
【问题讨论】:
-
有什么理由不把时间当作种子?您想要可重复的结果吗?
-
为什么每次想要一个新的随机数时都需要一个新的种子?只需在程序开始时播种一次;这就是随机生成器的工作原理。
-
@larsmans,是的,我想要可重复的结果!
-
@MrLister 如果我一开始就播种,结果将无法重现,因为我无法一次生成整个星系。我需要一次生成一个太阳系,我不知道玩家将按什么顺序探索这些系统。
-
"mercenne_twister_engine 类可以通过两种方式播种 - 使用单个无符号 long 值,或者使用包含任意大整数数组的 seed_seq 实例。"也许这就是我要找的! :) 现在要弄清楚如何使用它,文档很少......