【问题标题】:How to make a1,a2, and a3 to be read in the looping?如何使 a1、a2 和 a3 在循环中被读取?
【发布时间】:2019-10-31 05:30:24
【问题描述】:

我有一个问题,我需要随机化数组中的值,但我需要在外面声明 a1、a2 和 a3,因为 a1、a2 和 a3 需要等于 100。但是当我这样做时,不能随机化..循环保持执行相同的随机值。

a3=random.randint(0,1)
a2=random.randint(0,50)
a1=100-a2-a3
random_array =  np.array([np.array([ a2, a1, a3]) for _ in range(x)])

这是我得到的结果:

[ 6 94  0]   
[ 6 94  0]  
[ 6 94  0]   
[ 6 94  0] 
[ 6 94  0]   
[ 6 94  0]  
[ 6 94  0]  
[ 6 94  0]   
[ 6 94  0]   

【问题讨论】:

  • a3=random.randint(0,1,100) 生成 100 个随机值。

标签: python numpy random


【解决方案1】:

如果你想每次得到不同的随机值,你需要在循环内调用randint

random_array = []
for _ in range(x):
    a3=random.randint(0,1)
    a2=random.randint(0,50)
    a1=100-a2-a3
    random_array.append([a2, a1, a3])

【讨论】:

    【解决方案2】:

    正如 hpaulj 的评论 Numpy 的随机函数可以返回 numpy 数组。这可以消除对任何显式循环的需要。

    import numpy as np
    
    n=10
    a3 = np.random.randint(0,2, n)    # The upper limit is exclusive so randint(0,1) is always 0
    a2 = np.random.randint(0,50, n)
    a1 = 100-a2-a3
    
    a1
    # array([77, 72, 81, 57, 84, 60, 97, 54, 52, 86])
    
    a2
    # array([23, 27, 19, 42, 16, 39,  2, 45, 48, 14])
    
    a3
    # array([0, 1, 0, 1, 0, 1, 1, 1, 0, 0])
    

    如果你想要一个数组数组:

    np.stack((a1,a2,a3), axis=1)
    # array([[77, 23,  0],
    #        [72, 27,  1],
    #        [81, 19,  0],
    #        [57, 42,  1],
    #        [84, 16,  0],
    #        [60, 39,  1],
    #        [97,  2,  1],
    #        [54, 45,  1],
    #        [52, 48,  0],
    #        [86, 14,  0]])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-09
      • 1970-01-01
      • 2020-09-16
      • 1970-01-01
      相关资源
      最近更新 更多