一个简单的随机数生成器

一个简单的随机数生成器可以通过下列公式获得 rnew = (a*rold + b)%m 然后设置 rold 的值为 rnew。 编写程序要求用户为 rold 输入一个初始值,这个值一般称为种子。然后输出由上面的公式 生成的前 100 个随机数。使用 a=32310901,b=1279 和 m=2^24.

求解答(╥ω╥`)

a = 32310901
b = 1279
m = 2 ** 24

def generate_random_numbers(seed, num):
    rold = seed
    random_numbers = []
    for _ in range(num):
        rnew = (a * rold + b) % m
        random_numbers.append(rnew)
        rold = rnew
    return random_numbers

seed = int(input("请输入种子值(rold): "))
random_numbers = generate_random_numbers(seed, 100)

print("前100个随机数:")
for num in random_numbers:
    print(num)

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:
    # 导入random模块
    import random
    
    # 定义生成随机数的函数
    def generate_random_numbers(rold):
        # 定义参数
        a = 32310901
        b = 1279
        m = 2**24
    
        # 初始化结果列表
        result = []
    
        # 循环生成100个随机数
        for i in range(100):
            # 使用公式生成随机数
            rnew = (a * rold + b) % m
            # 更新rold为rnew,作为下次生成的上一个随机数
            rold = rnew
            # 将生成的随机数添加到结果列表中
            result.append(rnew)
    
        # 返回生成的随机数列表
        return result
    
    # 用户输入初始值rold
    rold = int(input("请输入一个初始值rold:"))
    
    # 调用生成随机数的函数并输出结果
    random_numbers = generate_random_numbers(rold)
    print("生成的前100个随机数为:", random_numbers)
    

    以上代码中,首先导入random模块,然后定义了一个generate_random_numbers函数来生成随机数。函数接收一个初始值rold作为参数,根据公式循环生成100个随机数,并将这些随机数添加到结果列表中。最后,用户输入一个初始值rold,通过调用generate_random_numbers函数生成随机数并输出结果。

    注意:根据题目要求,参数a、b和m是固定的值,所以可以直接在函数中定义。如果要求用户可以输入这些参数,可以将其作为函数的参数传入。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^