可以使用以下方法将1-5的随机数拓展到1-7:
a
和b
。index = (a - 1) * 5 + b
,这会生成一个1到25之间的数字。index
在1到21之间,则返回(index - 1) % 7 + 1
。如果index
在22到25之间,则丢弃重新生成。具体步骤如下:
import random
def random_1_to_7():
while True:
a = random.randint(1, 5)
b = random.randint(1, 5)
index = (a - 1) * 5 + b
if index <= 21:
return (index - 1) % 7 + 1
# 测试函数
for _ in range(10):
print(random_1_to_7())
这个方法利用了1-5
随机数的组合来均匀地生成1到21之间的数字,从而能够等概率地生成1到7之间的数字。
import java.util.Random;
public class Random1To7 {
private static Random random = new Random();
public static int random1To5() {
return random.nextInt(5) + 1; // 生成1到5之间的随机数
}
public static int random1To7() {
while (true) {
int a = random1To5();
int b = random1To5();
int index = (a - 1) * 5 + b;
if (index <= 21) {
return (index - 1) % 7 + 1;
}
}
}
public static void main(String[] args) {
// 测试函数
for (int i = 0; i < 10; i++) {
System.out.println(random1To7());
}
}
}
【有一个能够产生1-5的随机数的函数,如何利用这个函数实现产生1-7的随机函数。】https://mbd.baidu.com/ma/s/QZSc1HyK