python - 随机改变数字

标签 python random

使用 Python,我希望通过为从数千个数字中随机选择的几个(比方说 500 个)数字添加 +1 或 -1 来更改列表中的数字。

我熟悉随机数生成器,但不确定更改当前数字的下一步是什么。

例如,以下是我想要编辑的一些数字:

array([-0.5887, -0.3948,  2.7303, -0.4915, -0.2842,  2.7168, -0.6298,
       -0.2313,  2.5747, -0.5887, -0.3948,  2.7303, -0.6298, -0.2313,
        2.5747, -0.7114, -0.4042,  2.6477, -0.4915, -0.2842,  2.7168,
       -0.3596, -0.1205,  2.6922, -0.5133, -0.04  ,  2.5177, -0.4915,
       -0.2842,  2.7168, -0.5133, -0.04  ,  2.5177, -0.6298, -0.2313,
        2.5747, -0.3596, -0.1205,  2.6922, -0.2133,  0.0692,  2.6638,
       -0.3754,  0.1682,  2.469 , -0.3596, -0.1205,  2.6922, -0.3754,
        0.1682,  2.469 , -0.5133, -0.04  ,  2.5177, -0.2133,  0.0692,
        2.6638, -0.0574,  0.2702,  2.6393, -0.219 ,  0.3798,  2.4369,
       -0.2133,  0.0692,  2.6638, -0.219 ,  0.3798,  2.4369, -0.3754,
        0.1682,  2.469 ])

最佳答案

在Python中你可以做这样的事情:

import random

x = list(range(1,101))
indices = list(range(len(x)))
change = set(random.sample(indices, 10)) #randomly select 10 indices to change
x = [j+random.choice([-1,1]) if i in change else j for i,j in enumerate(x)]

即使 x 有 300,000 个条目并且您要更改其中的 5000 个条目,代码也能快速运行。使用 set() 是获得良好性能的关键,因为这使得使用 in 非常快。

关于python - 随机改变数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49492173/

相关文章:

Python:以数字方式查找积分的主值

python - 用python更改目录

python - (重新)在 Python 中加权随机 CSV 样本

c++ - 需要有关理解 C++ 中的 Rand() 和 XOR 的建议

python - 如何将具有字典列的数据框转换为多级数据框

python - 使用 'self' 调用类方法?

python - 如何使用python的任何

c - 初始化状态与初始化状态_r : confusing arguments

java - 生成特定的随机字符串数组

algorithm - std::discrete_distribution 接口(interface)背后的原因