可以使用以下方法将1-5的随机数拓展到1-7:

  1. 生成两个1-5的随机数,记作ab
  2. 计算一个新的数字 index = (a - 1) * 5 + b,这会生成一个1到25之间的数字。
  3. 如果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

https://www.nowcoder.com/share/jump/34126941717530424408