-1

我有一个包含 200 行和 200 列的网格。我想通过使用数字种子生成随机坐标对 i,j。这个种子是我每次生成一对数字时递增的值。

在生成 40,000 个值之后,所有坐标对在它们之间都是唯一的,因为没有 i,j 和 m,n,其中 i=m 和 j=n。

例如:

seed 0: generates 43,12
seed 1: generates 154, 62

等等……

种子意味着具有相同功能的相同输入会产生相同的结果,我对此很好。

我知道我需要某种伪随机算法,因为使用计算机时间或其他东西可能会生成两个相同的对,但是我从哪里开始呢?

4

2 回答 2

1

如果您希望每个种子都返回一个随机点,并且所有这些点都是唯一的,那么最简单的方法是将这些点放入一个数组中,打乱数组,然后使用整数种子来索引打乱后的数组。例如,seed=0将获得任何碰巧被洗牌到第一个位置的元素。

让整数表示对对我来说似乎更容易一些,所以制作一个从 0 到 40000(即 200x200)的数组,将其打乱,然后使用 0 到 40000 范围内的种子。要将整数转换n为点对使用,i=n%200j=(n-i)/200

当然,由于您希望每个种子返回一个唯一点,因此您必须拥有等于或少于点数的种子,

于 2013-04-29T22:22:04.687 回答
-1

您需要一个可以为其设置种子值的随机数生成器。好像你知道这一点。你不能设置种子,Math.random()但是那里有很多伪随机数生成器。我建议你看看seedrandom.js

于 2013-04-29T20:46:23.527 回答