创建一个生成随机数的函数

时间:2013-11-21 07:46:37

标签: python

注意:我无法使用任何内置函数来解决此问题。

这就是问题:

给定一个返回1到5之间随机整数的函数,创建一个创建1到7之间随机整数的函数。

3 个答案:

答案 0 :(得分:1)

显然是以下doesn't work。请参阅链接的答案和其他答案。


嗯,这是我正在考虑的方法。这可能是错的。我假设结果应该在更大的范围内随机分布。

使用给定的随机函数(生成数字[1,5])生成7个随机数并计算它们的总和。

这将产生介于7(1 * 7)和35(5 * 7)之间的值。

因为这个值可以被目标范围整除并且随机分布,所以似乎将中间范围[7,35]折回到[1,7]是有效的,而不会失去一致性。

或许这不是它 - 但似乎利用数字之间的共同倍数是关键。

答案 1 :(得分:1)

Adam Rosenfield's solution前一段时间你已经回答过,你可能会尝试使用类似下面这个算法的算法:

int i;
do
{
  i = 5 * (rand5() - 1) + rand5();  // i is now uniformly random between 1 and 25
} while(i > 21);
// i is now uniformly random between 1 and 21
return i % 7 + 1;  // result is now uniformly random between 1 and 7

编辑:翻译为python:

def rand7():
i = 0;

while True:
    i = 5 * (rand5() -1) + rand5()
    if i > 21:
        break
return i % 7 + 1

答案 2 :(得分:-1)

import random
def winningFunc():
   return originalFuncReturning1to5() + random.randint(0,2)