如何在循环中将随机浮点值添加到数组中

2024-09-30 18:23:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一组随机化的浮点值,它们将被安排到一个数组中,在每个循环的末尾产生67个,但是,总共有64个循环。 例如,如果每个循环有4个值和3个整数循环,我希望它是这样的: 值=[[0,4,5,1],[6,6,5,3],[0,0,0,7]] 因此,我可以将它们标识为单独的数组,但是,我不确定在创建值之后追加值的最佳方式,但是我知道如何返回它们。原谅我,因为我不懂逻辑。在

import math
import random

funcs = []
coord = []

pi = math.pi

funcAmt = 0
coordAmt = 0
repeatAmt = 0
coordPass = 0

while funcAmt < 64:
    while coordAmt < 67:
        coordAmt += 1
        uniform = round(random.uniform(-pi, pi), 2)
        print("Coord [",coordAmt,"] {",uniform,"} Func:", funcAmt + 1)
        if uniform in coord:
            repeatAmt += 1
            print("Repeat Found!")
            coordAmt -= 1
            print("Repeat [",repeatAmt,"] Resolved")
            pass
        else:
            coordPass += 1
            coord.append(uniform)
    #<<<Append Here>>>
    funcAmt += 1
    coord.clear()
    coordAmt = 0

在我上面给定的代码中,它类似于: 函数=[ [<;67项>;], …又63次了 ]在


Tags: importpirandommathuniform数组浮点repeat
3条回答

您可以使用集合,因为它们不允许重复的值:

from math import pi
import random

funcs = []
funcAmt = 0

while funcAmt < 64:  # This is the number of loops
    myset = set()
    while len(myset) < 67:  # This is the length of each set
        uniform = round(random.uniform(-pi, pi), 2)
        myset.add(uniform)
    funcs.append(list(myset))  # Append randomly generated set as a list
    funcAmt += 1

print(funcs)

有几种方法可以解决这个问题。不用使用while列表和计数器,您可以使用for循环。或者至少对外部循环执行此操作,因为看起来您仍然希望检查重复。下面是一个使用原始维度3和4的示例:

from math import pi
import random

coord_sets = 3
coords = 4

biglist = []
for i in range(coord_sets):

    coords_set = []
    non_repeating_coords = 0
    while non_repeating_coords < coords:
        new_coord = round(random.uniform(-1.0*pi, pi), 2)
        if new_coord not in coords_set:
            coords_set.append(new_coord)
            non_repeating_coords += 1

    biglist.append(coords_set)

print(biglist)

您的“append here”逻辑应该追加坐标列表,然后清除该列表,以便外循环的下一次迭代:

funcs.append(coord[:])    # The slice notation makes a copy of the list
coord.clear()             # or simply coord = []

你应该学会使用for循环。这将简化循环:您不必自己维护计数。例如:

^{pr2}$

您还可以查找如何生成“列表理解”,它可以将您的过程简化为一行代码——一行很长、很复杂的行,但是可以用适当的空白区来阅读。在

这能让你动起来吗?在

相关问题 更多 >