创建指定密度的零一矩阵函数
我想创建一个函数,这个函数需要三个参数(n, m, d),它的输出应该是一个有n行m列的矩阵。这个矩阵里的值应该是0和1,随机生成,目的是确保1的数量占总数的比例是d。
这是我目前想到的代码,但我就是不知道怎么把这个“密度”变量加进去。
def create_matrix(n, m):
count = 1
grid = []
while count <= n:
for i in range(m):
x = [random.randrange(0,2) for _ in range(m)]
grid.append(x)
count += 1
return grid
3 个回答
-1
好的,下面是你要的内容:
在编程中,有时候我们需要把一些数据从一个地方转移到另一个地方。这就像把水从一个杯子倒到另一个杯子一样。这个过程可以通过不同的方法来实现,有些方法可能更快,有些可能更慢。
在这个过程中,我们还需要考虑到数据的格式。就像水有不同的温度,有的热有的冷,数据也有不同的类型,比如数字、文字或者图片。我们需要确保在转移数据的时候,不会让它变得混乱。
此外,编程中还有很多工具和库可以帮助我们更方便地处理这些数据。就像厨房里有各种各样的器具,可以让我们更轻松地做饭一样。
总之,数据转移是编程中一个很重要的部分,掌握了这个技能,可以让我们更高效地处理信息。
import random
def foo(row, col, d):
N = row * col
inds = set(random.sample(range(N), d))
arr = [1 if i in inds else 0 for i in range(N)]
return [arr[i:(i + col)] for i in range(0, N, col)]
foo(4, 5, 7)
# [[1, 0, 0, 0, 0], [0, 0, 1, 0, 1], [0, 1, 0, 0, 0], [0, 1, 1, 1, 0]]
1
import random
def create_matrix(n, m, d):
total_elements = n * m
total_ones = int(total_elements * d)
matrix = [[0] * m for _ in range(n)]
ones_indices = random.sample(range(total_elements), total_ones)
for idx in ones_indices:
row = idx // m
col = idx % m
matrix[row][col] = 1
return matrix
# Example usage:
n = 3
m = 5
d = 0.3
result = create_matrix(n, m, d)
for row in result:
print(row)
输出:
[0, 0, 0, 0, 0]
[0, 0, 0, 1, 0]
[0, 0, 1, 1, 1]
注意:如果你提供 d=0,那么就没有任何1;如果 d=1,所有的元素都是1。
2
import random
def create_matrix(n, m, d):
# if d is greater than multiple of n and m, return error
if d > n*m : return f'd should be less than {n*m}'
else:
i = 0
# Create a n x m matrix with all value being zero
mtrx = [[0 for x in range(m)] for y in range(n)]
# Create a while loop with condtion i is less than d
while i < d:
# rest understandable with code
r = random.choice(range(n))
c = random.choice(range(m))
if mtrx[r][c] != 1: mtrx[r][c] = 1
else: i = i -1
i += 1
return mtrx
r = create_matrix(4,5, 10)
print(r)
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。