【发布时间】:2016-08-28 15:44:09
【问题描述】:
如何编写两个函数来生成支持next和previous的随机数?
我的意思是如何写两个函数:next_number()和previous_number(),next_number()函数生成一个新的随机数,previous_number()函数生成之前生成的随机数。
例如:
int next_number()
{
// ...?
}
int previous_number()
{
// ...?
}
int num;
// Forward random number generating.
// ---> 54, 86, 32, 46, 17
num = next_number(); // num = 54
num = next_number(); // num = 86
num = next_number(); // num = 32
num = next_number(); // num = 46
num = next_number(); // num = 17
// Backward random number generating.
// <--- 17, 46, 32, 86, 54
num = previous_number(); // num = 46
num = previous_number(); // num = 32
num = previous_number(); // num = 86
num = previous_number(); // num = 54
【问题讨论】:
-
您不能将目前所有生成的数字存储在一个列表中吗?
-
如果你只需要N个数字的有限序列,那么随机打乱整数1..N,并存储打乱后的集合。
-
在你的例子中,如果你第五次调用
previous_number()会发生什么? -
@mbeckish: 一个新的随机数 :)
-
我认为您需要定义“随机”对您意味着什么。它的意思是“不连续”还是“尽可能少的确定性”(如en.wikipedia.org/wiki/Random_number_generation)