【问题标题】:Python loop random integer functionPython循环随机整数函数
【发布时间】:2021-12-29 00:41:20
【问题描述】:

我正在尝试创建一个循环,该循环接受一个输入值,并创建许多介于 0 和 10 之间的随机数,然后将这些值通过公式放入循环中并将这些值保存到一个数组中。以下是我所做的:

def f(x):
    x**2

def Sample(npts):
    sample = []

    randomlist = random.sample(range(0.0, 10.0), npts)


    for i in range(randomlist):
        y  = f(randomlist)
        sample.append(y)

    print(sample)

现在我收到一条错误消息,指出超出了样本范围。当我设置 npts = 100 时会发生这种情况,有人可以解释我哪里出错了吗?另外,我担心我以后可能调用了错误的值。所以解释一下,我试图在 0 和 10 之间获得 100 个随机值(在这种情况下为 npts),这些值是通过 f(x) 的 x 值,(在这种情况下,这些值乘以 2 ),然后每次将这些新计算的值保存到数组样本中,然后在最后打印。

希望这使我想要做的事情变得清晰,所以请告诉我如何修复错误!

【问题讨论】:

  • 即使你的随机数生成工作正常,你的函数f() 也不会返回任何东西,所以sample 只是一个Nones 的列表。
  • range(0.0, 10.0) 出现错误。你的代码真的是什么样子的?

标签: python arrays function loops math


【解决方案1】:

来自random.sample 文档: https://docs.python.org/3/library/random.html#random.sample

返回从种群序列或集合中选择的唯一元素的 k 长度列表。用于随机抽样无替换

您从 10 个项目中选择了 100 个项目没有替换,因此出现错误。

如果您想更换样品,请使用random.choiceshttps://docs.python.org/3/library/random.html#random.choices

返回从人口替换中选择的 k 大小的元素列表。如果人口为空,则引发 IndexError。

【讨论】:

    【解决方案2】:

    研究一下。

    import random
    
    
    def f(x):
        return x**2
    
    
    def Sample(npts):
        sample = []
    
        # Generate random numbers from 0 to 10.
        randomlist = []
        for _ in range(npts):  # just counting from 0 to npts
            r = random.randint(0, 10) # returns integer value randomly in the range [0, 10]
            randomlist.append(r)  # save to a list
    
        # Save result of function f
        for v in randomlist: # get each item in the list
            y = f(v)
            sample.append(y)
    
        return sample
    
    # start
    npts = 100
    result = Sample(npts)
    print(f'result length: {len(result)}')
    print(f'result: {result}')
    

    输出

    result length: 100
    result: [4, 16, 1, 49, 100, 16, 4, 81, 81, ...
    

    【讨论】:

    • 谢谢,这对我有帮助,我现在已经做了什么,我可能把它弄得太复杂了,但我想一口气完成所有这些
    • 对不起,我修改了代码,以便随机数生成器生成 [0 和 10] 范围内的整数随机数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-16
    • 2019-02-22
    • 2018-03-18
    • 2018-01-20
    • 1970-01-01
    • 1970-01-01
    • 2020-09-15
    相关资源
    最近更新 更多