gpt4 book ai didi

python - 如何根据条件生成随机数

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:27:54 26 4
gpt4 key购买 nike

我想在 [1,n] 范围内生成 2n-1 个随机整数,每个元素出现两次,除了随机值,它只出现一次。
例如:

n = 3  
seq = [1, 2, 3, 1, 3]

在这个例子中,2 只出现了一次。

我的算法是使用字典,像这样:

-------------| num |times||  1  |  2  ||  2  |  1  ||  3  |  2  |

其中键从 1 到 n,值表示键出现的次数。我用两个值填充字典,并将一个随机键的值减少为 1。

  1. 还有其他算法吗?
  2. n很大导致无法存入内存怎么办?

最佳答案

我不确定我是否 100 确定你在追求什么,但这里是一个尝试:

import random as rn

x = range(3)*2 #generate a list where each number appears twice

rn.shuffle(x) #shuffle it
x.pop() #remove one number

结果:

>>> x
[2, 0, 2, 1, 0] #the result is a list where every number appears twice, except for
#one number which was removed at random, also the numbers are
#randomly arranged

编辑:

这里尝试对非常大的 n(一个 n 表示该大小的列表无法存储在您的 ram 中)执行此操作。我看不到如何打乱整数。但是,我可以随机删除一个。假设您想将列表写入 txt 文件。

drop = rn.range(0,n) #choose a random integer to drop

with open('my_file.txt','w') as f:
for ind,ele in enumerate(xrange(n)):
if ind == drop: #do not write the element to txt file
pass
else:
f.write(str(ele) + '\n') #write every except for one element to txt file

with open('my_file.txt','a') as f:
for ele in xrange(n):
f.write(str(ele) + '\n') # write every element to txt file

最后我们将 n-1 个元素写入 txt 文件两次,一次写入 1 个元素,该元素是随机选择的。

对于 n = 5,txt 文件如下所示:

0
2
3
4
0
1
2
3
4

在上面的例子中,1 只出现了一次,其他数字出现了两次。

关于python - 如何根据条件生成随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10713250/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com