vba 如何让每次生成的随机序列都一样?比如调用random()函数,但每次得到的序列都不一样?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vba 如何让每次生成的随机序列都一样?比如调用random()函数,但每次得到的序列都不一样?相关的知识,希望对你有一定的参考价值。
比如Function random() As String
Dim b(15), i&
Randomize
For i = 0 To 14
b(i) = Int(Rnd * 2)
Next
random = Join(b, "")
End Function
调用时a=random()
b=random()
结果是a=101100110110110
b=001100100010101
如何让a,b得到的序列是一样的呢?而且a ,b序列中的数是随机的0,1?
如何做到每次调用时生成的随机序列都一样?
生成1~100的随机数,每个又不重复就是在和样做的,先顺序生成一个数组,元素按顺序是1~100,然后两两交换位置 参考技术B 如果每次一样就不是随机了。
第一次运行在指定的表中也填入数据,再运行时先判断指定表是否有数据,有直接取。 参考技术C Randomize这句删了,或者直接把b赋给a本回答被提问者采纳
c++随机数生成
算机的随机数都是由伪随机数,即是由小M多项式序列生成的,其中产生每个小序列都有一个初始值,即随机种子。(注意: 小M多项式序列的周期是65535,即每次利用一个随机种子生成的随机数的周期是65535,当你取得65535个随机数后它们又重复出现了。)
1) 给srand()提供一个种子,它是一个unsigned int类型;
2) 调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到RAND_MAX之间);
3) 根据需要多次调用rand(),从而不间断地得到新的随机数;
4) 无论什么时候,都可以给srand()提供一个新的种子,从而进一步“随机化”rand()的输出结果。
#include <iostream> #include <stdlib.h> #include <time.h> using namespace std; int main() { srand((unsigned)time(NULL)); for(int i = 0; i < 10;i++ ) cout << rand() << ‘\t‘; cout << endl; return 0; }
5.产生一定范围随机数的通用表示公式
要取得[a,b)的随机整数,使用(rand() % (b-a))+ a;
要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a;
要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1;
通用公式:a + rand() % n;其中的a是起始值,n是整数的范围。
要取得a到b之间的随机整数,另一种表示:a + (int)b * rand() / (RAND_MAX + 1)。
要取得0~1之间的浮点数,可以使用rand() / double(RAND_MAX)。
以上是关于vba 如何让每次生成的随机序列都一样?比如调用random()函数,但每次得到的序列都不一样?的主要内容,如果未能解决你的问题,请参考以下文章