LabVIEW论坛
直播中

张晨曦

未满1年用户 24经验值
擅长:可编程逻辑
私信 关注
[问答]

labview怎么输出不重复的整数随机数

大佬们我想问一下怎么能够生成不重复的随机数,labview能够输出整数随机数

已退回20积分

回帖(4)

世荣

2025-4-16 16:56:35

像这样,用一个循环,每次随机的数都组合成历史数组,在历史数组里查询新随机的数,查到了就不输出,没查到就输出,并同时将这个数放到历史数组里
7 举报
  • 张晨曦: 大佬,我想设置1-17的随机数,是不是在你这个图中把随机数范围改成1-17就能使用了
  • 世荣 回复 张晨曦: 是的,两个黄色的函数一个是查询一维数组一个是组成数组的
  • 张晨曦 回复 世荣: 大佬我想把这个改成那种就是可以一个数一个数输出,然后变成一个数组显示的可以指导一下吗
  • 世荣 回复 张晨曦: 唔。。。你是指将输出的数最后汇总成数组显示吗。那你可以加一个循环的停止条件,最后输出移位寄存器就行
  • 张晨曦: 大佬那个右边黄色矩形叫什么名字
  • 张晨曦: 大佬用了你这个输出还是会重复
  • 世荣 回复 张晨曦: 怎么会呢,你贴个程序框图看看

zqzq666

2025-4-17 09:12:04
时间戳,秒取1-2位小数。整体*100
举报

h1654155735.9247

2025-4-21 14:54:01
乘以100,然后取整
举报

康桃花

2025-4-23 17:11:11

在LabVIEW中生成不重复的整数随机数可以通过以下步骤实现。这里以生成0到N-1范围内的不重复随机整数为例:


方法思路



  1. 生成范围数组:首先创建一个包含所有可能整数的有序数组(例如0到N-1)。

  2. 随机打乱数组:使用洗牌算法随机排列数组元素顺序。

  3. 顺序输出:逐个取出数组中的元素,确保每次取出的数都是唯一且随机的。


实现步骤



  1. 设置范围:确定随机数的最大值(N)。

  2. 创建有序数组:使用Ramp Pattern.vi生成0到N-1的连续整数数组。

  3. 随机排列数组:使用Shuffle 1D Array函数打乱数组顺序。

  4. 循环输出:通过索引逐个取出元素,使用移位寄存器保存数组和当前索引。


LabVIEW代码示例


下图展示了如何在LabVIEW中实现这一功能:


LabVIEW生成不重复随机数框图


详细说明



  • 初始化部分

    • Ramp Pattern.vi:生成起始值为0,步长为1,数量为N的数组。

    • Shuffle 1D Array:将生成的数组随机打乱顺序。


  • 循环部分

    • 使用While循环和移位寄存器维护当前索引和数组。

    • 每次循环取出当前索引对应的元素,并递增索引。

    • 当索引超过数组长度时停止循环(或根据需求重置数组)。



关键函数说明




  1. Ramp Pattern.vi  



    • 路径:Programming → Array → Ramp Pattern

    • 参数:Start(0)、Increment(1)、Number of Elements(N)

    • 作用:生成连续的整数数组。




  2. Shuffle 1D Array  



    • 路径:Programming → Array → Shuffle 1D Array

    • 作用:随机打乱一维数组元素的顺序。




  3. 索引数组  



    • 路径:Programming → Array → Index Array

    • 作用:通过索引取出数组中的元素。




扩展功能



  • 动态范围调整:将N作为输入参数,方便修改随机数范围。

  • 循环重用:当所有数取完后,可以重新打乱数组并重置索引,实现无限循环输出。

  • 错误处理:添加数组越界检查,避免索引超出范围。


注意事项



  • 确保N值合理,避免生成过大的数组导致内存问题。

  • 使用不同的随机种子(可通过Seed输入)确保每次运行结果不同。


通过这种方法,可以高效且简洁地生成不重复的整数随机数序列。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分