wild84 2023-05-10 08:57 采纳率: 80%
浏览 19
已结题

數組隨機獲取元素算法問題

#算法題

#有兩個數組, 要從數組中隨機獲取數據3個數據, 3個數據不能來自同一個數組

#請問如何寫?

  • 写回答

3条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-05-10 15:01
    关注
    • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7448723
    • 你也可以参考下这篇文章:递减剔除数组元素算法
    • 除此之外, 这篇博客: 计算机怎么实现减法?中的 位和字节 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • 我们把计算机的内存想象成一大片格子,每个格子都只能存放1、0中的一个数,这样一个单独的格子就叫“位”。多个位连在一起就组成字节,一般计算机上一个字节由八个位组成。

      单个格子能存储的信息非常有限,只有0或1。然而当我们把多个格子,也就是位连在一起并且赋予这些位某种意义的时候,这些位就能表示大量信息。比如我们考虑八个连在一起的位,将这些位称作长度为8的位向量\underset{x}{\rightarrow} = [x_{7},x_{6},...,x_{0}],就可以表示数集{7,6,...0}的任何子集E。当i \epsilon E时,令x_{i} = 1,利用这种编码方式,就可以用位向量[0,0,0,1,0,1,0,0]表示数集{2,4}。

    • 您还可以看一下 孙玖祥老师的图解数据结构与算法课程中的 红黑树的特征推导 小节, 巩固相关知识点
    • 以下回答由chatgpt基于相关博客总结生成:

      问题回答:

      从一个数组中随机获取一个元素,可以采用以下方法:

      import random
      arr = [1, 2, 3, 4, 5]
      random_elem = random.choice(arr)
      print(random_elem)
      

      其中,random模块中的choice()函数可以从非空序列中随机地返回一个元素。该方法的时间复杂度为O(1)。

      如果要对该方法进行封装,可以这样写:

      import random
      
      def get_random_elem(arr):
          if not arr:
              return None
          return random.choice(arr)
      

      其中,not arr表示判断arr是否为空序列,如果为空,直接返回None。该方法的时间复杂度也为O(1)。

      需要注意的是,如果是需要进行多次随机操作,建议先将原数组打乱,然后再进行随机操作,这样可以保证获取的元素随机性更高。打乱数组可以使用random模块中的shuffle()函数:

      import random
      
      def get_random_elem(arr):
          if not arr:
              return None
          random.shuffle(arr)
          return arr[0]
      

      其中,shuffle()函数可以将序列x中元素顺序打乱。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月3日
  • 已采纳回答 5月26日
  • 创建了问题 5月10日

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?