vb中生成不重复随机数(vb中生成不重复随机数代码)
vb怎么产生不重复随机数
先声明一个存放随机数的数组,然后遍历数组,如果重复再随机生成一个替换
vb中怎么生成不重复的随机数
Private?Sub?Command1_Click()
????txtoutput?=?Rndz(1,?38)
End?Sub
Private?Function?Rndz(a?As?Long,?b?As?Long)
????Randomize
????Rndz?=?Int((a?-?b?+?1)?*?Rnd()?+?b)
End?Function
在vb中怎么随机产生不重复的数字
产生不重复的,需要在程序里保存一个已经生成的数字列表。每次随机生成的时候就在之中搜索有无同样的,如果有,就重新生成。
例:
假如要生成5个数字,则
include
time.h
include
stdlib.h
int
numgen[5]
=
{0,
0,
0,
0,
0};
int
index
=
0;
bool
isgenerated(int
newnum)
{
for(int
i=0;
iindex;
i++)
{
if(numgen[i]
=
newnum)
return
true;
}
return
false;
}
void
main()
{
srand((unsigned)time(null));
int
newnum
=
rand();
for(index
=
0;
index
5;
index++)
{
while(!isgenerated(newnum))
newnum
=
rand();
numgen[index]
=
newnum;
}
}
vb产生不重复的随机数
Private?Sub?Form_Load()
Randomize
Show
Dim?a(1?To?30)?As?Integer,?g(1?To?9)?As?Integer
a(1)?=?Int(10?+?90?*?Rnd)
k?=?1??'k表示生成的20个数字的个数
Do?While?k??30
x?=?Int(10?+?90?*?Rnd)
f?=?0??'首先置f=0
If?x?=?a(k)?Then?f?=?1?'如果新生成的随机数x与a(k)相同,则置f=1,此处只与前一个值比较,是错误的
If?f?=?0?Then??'如果x与a(k)不同,此时f=0
k?=?k?+?1??????'K增加一个数字
a(k)?=?x???????'把x赋值给a(k)数组
End?If
Loop
For?j?=?1?To?30
Print?a(j);???????'打印数组
If?j?Mod?10?=?0?Then?Print???'每10个一行
Next?j
For?j?=?1?To?30
h?=?Int(a(j)?/?10)
g(h)?=?g(h)?+?1
Next?j
For?j?=?1?To?9
Print?10?*?j;?"-";?10?*?j?+?9,?g(j)
Next?j
End?Sub