▲▲▲高分相送:如何在某一范围内的得到N个随即数,而且要保证这些随即数决无相同。

bluebill 2002-10-11 12:54:01
需要得到在某一范围内的随机数,这些随机数无论是同时产生还是分步产生,都不会产生完全相同的随机数!
...全文
103 9 打赏 收藏 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
boywang 2002-10-11
  • 打赏
  • 举报
回复
你说的范围有多大?
csdnHelp 2002-10-11
  • 打赏
  • 举报
回复
其实!你用rnd函数很爽的完成,你自己可以编,这样很灵活,别人的帮助总是有限的,如果你对rnd不了解请看MSDN!!!
另外,昨天好象有类似的,你查一下,应该没问题!!!
sindyzhou 2002-10-11
  • 打赏
  • 举报
回复
private Sub GetRand(Count As Long, LowLimit As Long, UpLimit As Long)
' Count '用於記數
' lowlimit '下限
' uplimit '上限
Dim i As Integer,i As Integer
Dim TempGet() As Integer '你所要的結果

ReDim TempGet(Count) As Integer

For i = 0 To Count - 1 '共需要這么多個數
Randomize '复位隨机數种子
TempGet(i) = (UpLimit - LowLimit - i) * Rnd() + LowLimit
Check:
For j = 0 To i - 1 '對每一個生成的隨机數與以前生成的數相比較
If TempGet(i) = TempGet(j) And i <> j Then
'如果有重復就自加一
TempGet(i) = TempGet(i) + 1
GoTo Check '并重新檢查
End If
Next j
Debug.Print TempGet(i)
Next i
End Sub

可以這樣測試:
重復調用getrand(4,1,4),每次的結果一定是1,2,3,4,但順序是隨机的
purple.taro 2002-10-11
  • 打赏
  • 举报
回复
楼上的说的对,现在我还没有其它办法例如,
要产生1到10之间的随机数的话,先声明一个有6个元素的数组
Dim a(10) As Integer, i As Integer, j As Integer
Dim tru As Boolean
Dim ran As Integer
i = 1: tru = False
Do While (i <= 10)
ran = Int(10 * Rnd + 1)
For j = 1 To i - 1
If ran = a(j) Then tru = True
Next j
If tru = False Then
a(i) = ran
i = i + 1
End If
tru = False
Loop
ztchen 2002-10-11
  • 打赏
  • 举报
回复
再具体些,这样吧:
dim ix as integer,iy as integer,iTmp as integer
dim aryTemp(10) as integer
randomize
for ix=0 to 9
'获取随机数
iTmp=int(255*rnd+1)
'循环原先的数组检查重复性
for iy=0 to ix
if iTmp=aryTemp(iy) then
'如果重复则退回前一步并退出检查循环
ix=ix-1
exit for
else
'如果不重复
if iy=ix then
'将合法随机数添加到数组中的最末位
aryTemp(ix)=iTmp
endif
endif
next
next

数组里的10个数就是1至255范围内的随机数,并都做了重复性的检查
sindyzhou 2002-10-11
  • 打赏
  • 举报
回复
Dim Count as integer,lowlimit as integer,uplimit as integer
Dim i As Integer,i As Integer
Dim TempGet() As Integer

ReDim TempGet(Count) As Integer

For i = 0 To Count - 1
TempGet(i) = (UpLimit - LowLimit - i) * Rnd() + LowLimit
Check:
For j = 0 To i - 1
If TempGet(i) = TempGet(j) And i <> j Then
TempGet(i) = TempGet(i) + 1
GoTo Check
End If
Next j
Next i

測試通過
bluebill 2002-10-11
  • 打赏
  • 举报
回复
还要别的办法吗?
sindyzhou 2002-10-11
  • 打赏
  • 举报
回复
產生了相同的數就再來一次

如果是离散數字的話應該可以用代碼控制
ztchen 2002-10-11
  • 打赏
  • 举报
回复
应该是这样吧:
dim i,j
randomize
i=int(255*rnd+1)
j=int(255*rnd+1)

这样得到的是1到255范围之内的随机数,不可能重复
内容概要:本文基于Matlab/Simulink平台,对电励磁同步电机在异步牵入、稳态运行及能耗制动三个阶段的全周期动态特性进行建模仿真与系统研究。研究构建了完整的电机数学模型与仿真系统,重点分析了电机从异步启动到同步运行的过渡过程、稳态运行时的电磁与机械性能,以及执行能耗制动时的减速特性与能量耗散机理。通过仿真,揭示了励磁电流、负载转矩与转速在不同工况下的动态响应规律与耦合关系,为电机的控制策略设计与性能优化提供了理论依据和数据支持。; 适合人群:具备电机学、电力电子与电力拖动基础知识的电气工程及相关专业的研究生、科研人员与工程技术人员。; 使用场景及目标:①研究电励磁同步电机的启动特性,解决异步牵入过程不稳定或失败的问题;②分析电机在不同负载下的稳态运行性能,优化运行效率;③设计和验证能耗制动策略,精确控制制动过程的减速时间和能量消耗。; 阅读建议:在学习过程中,应结合电机的基本原理,深入理解仿真模型中各模块(如电机本体、励磁控制、负载模型)的搭建逻辑,并通过调整仿真参数(如励磁电压、负载大小)来观察和分析系统动态响应,以加深对电机全周期运行特性的理解。
内容概要:通过介绍短时倒谱(Cepstrogram)计算方法,开展时-倒频分析研究,深入探讨倒谱分析机理、短时倒谱构建逻辑及时-倒频分析的内涵。文中系统对比了时-倒频分析与全局倒谱、传统时频分析方法的差异,阐明其在卷积特征解耦、非平稳信号跟踪、微弱周期特征增强及多维特征融合方面的技术优势,并分析其在语音识别、机械故障诊断、音频处理和非平稳时序信号分析中的典型应用,同时指出其在分辨率、计算复杂度等方面的局限性并提出优化方向。; 适合人群:具备一定信号处理或数据分析基础,从事机械、通信、声学或自动化等领域研究的研发人员及研究生。; 使用场景及目标:① 掌握短时倒谱与时-倒频分析的理论基础与实现方法;② 应用于语音信号处理、机械设备故障诊断、音频相似性检测等工程实践;③ 对比传统方法,提升对复杂非平稳信号中隐含周期特征的识别能力; 阅读建议:此资源以Matlab代码实现为核心,强调理论与实践结合,建议读者在理解核心算法原理的基础上,动手运行代码并调试参数,结合具体应用场景深化对方法适用性与局限性的认识。

7,788

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧