怎么吃不饱382 2023-09-25 21:11 采纳率: 75%
浏览 3
已结题

关于随机数和固定的问题

请问如何生成有n个数的数组,里边只有0,1,-1排列随机,这个我知道用random.randint(-1,2,n),并且数组所有数加起来和为0呢?这一步怎么写代码呢?

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-09-26 03:39
    关注

    该回复引自免费微信小程序-皆我百晓生:


    生成数组的代码可以写成:

    import random
    
    n = 10 # 假设生成长度为10的数组
    
    arr = [random.choice([-1, 0, 1]) for _ in range(n)]
    

    这样我们就可以生成一个长度为n的数组arr,其中的数只有01-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条)

报告相同问题?

问题事件

  • 系统已结题 10月4日
  • 已采纳回答 9月26日
  • 创建了问题 9月25日

悬赏问题

  • ¥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能不能做客户端怪物