请问如何生成有n个数的数组,里边只有0,1,-1排列随机,这个我知道用random.randint(-1,2,n),并且数组所有数加起来和为0呢?这一步怎么写代码呢?
2条回答 默认 最新
关注 该回复引自免费微信小程序-皆我百晓生:
生成数组的代码可以写成:
import random n = 10 # 假设生成长度为10的数组 arr = [random.choice([-1, 0, 1]) for _ in range(n)]
这样我们就可以生成一个长度为
n
的数组arr
,其中的数只有0
,1
,-1
。要确保数组中所有数加起来的和为
0
,我们可以在生成数组后进行调整,将其中一个数替换为相反数。具体代码如下:import random n = 10 # 假设生成长度为10的数组 arr = [random.choice([-1, 0, 1]) for _ in range(n)] # 计算数组总和 total_sum = sum(arr) # 判断总和是否为0 if total_sum != 0: # 随机选择一个非零元素,并替换为相反数 non_zero_indices = [i for i in range(n) if arr[i] != 0] random_index = random.choice(non_zero_indices) arr[random_index] *= -1
这样就确保了数组中所有数加起来的和为
0
。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
- ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
- ¥20 关于web前端如何播放二次加密m3u8视频的问题
- ¥15 使用百度地图api 位置函数报错?
- ¥15 metamask如何添加TRON自定义网络
- ¥66 关于川崎机器人调速问题
- ¥15 winFrom界面无法打开
- ¥30 crossover21 ARM64版本安装软件问题
- ¥15 mymetaobjecthandler没有进入
- ¥15 mmo能不能做客户端怪物