The first method does not specify a random seed, and the system automatically selects the current time as a random seed:
The code is as follows |
Copy Code |
Random ro = new Random (); |
The second method can specify an int type parameter as a random seed:
The code is as follows |
Copy Code |
int iseed=10; Random ro = new Random (10); Long tick = DateTime.Now.Ticks; Random ran = new Random ((int) (tick & 0xffffffffL) | (int) (tick >> 32)); |
This will ensure that 99% is not the same.
Short time repetition
2. Generation of non-repetitive random numbers using seeds
(a) when generating random numbers: Random ran = new Random ((int) DateTime.Now.Ticks);
The code is as follows |
Copy Code |
Ran. Next (Minvale, Maxvale); |
Can effectively solve the problem of duplication
Number of ticks PS:DateTime.Now.Ticks as data number
(b) Random Random = new Random (Getrandomseed ())//implementation using cryptographic service provider (CSP) to implement the cryptographic random number generator (RNG) s
The code is as follows |
Copy Code |
tatic int Getrandomseed () { byte[] bytes = new Byte[4]; System.Security.Cryptography.RNGCryptoServiceProvider rng = new System.Security.Cryptography.RNGCryptoServiceProvider (); Rng. GetBytes (bytes); Return Bitconverter.toint32 (bytes, 0); } or Random Sourcegen = new Random (new Guid (). GetHashCode ());//Using GUID |
3. Use the time delay to solve the repetitive problem
Thread.Sleep (100);
4. Recursion, using it to detect whether there is duplication of generated random numbers, if taken out of the number and the number has been obtained repeated random access.
The code is as follows |
Copy Code |
Random ra=new Random (Unchecked ((int) DateTime.Now.Ticks)); Int[] Arrnum=new int[10]; int tmp=0; int minvalue=1; int maxvalue=10; for (int i=0;i<10;i++) { Tmp=ra. Next (Minvalue,maxvalue); Random Fetch number Arrnum=getnum (Arrnum,tmp,minvalue,maxvalue,ra); Take out values to the array } ......... ......... public int getnum (int[] arrnum,int tmp,int minvalue,int maxvalue,random ra) { int n=0; while (n<=arrnum.length-1) { if (arrnum[n]==tmp)//Use loops to determine if there is duplication { Tmp=ra. Next (Minvalue,maxvalue); Re-randomly acquired. Getnum (Arrnum,tmp,minvalue,maxvalue,ra)//recursive: If the number taken out and the number obtained have been repeated randomly retrieved. } n++; } return TMP; } |
Some other references
1: Returns a total of n digits, where m is the random number of decimal numbers
The code is as follows |
Copy Code |
--------------------------------------------------------------------------------
function Randomxiao (n,m) { var a = Math.pow (n+m); var B = random (a); Return B=b/math.pow (m); }
|
--------------------------------------------------------------------------------
You can use Trace (Randomxiao (3,2)); This function is simple. Math.pow (n,m) is used to return a number with N as the base and M as exponent. Squares
# 2: Returns a random number between N and M
The code is as follows |
Copy Code |
--------------------------------------------------------------------------------
function Randomnm (n,m) { if (m>=n) { return random (m-n+1) +n; } else { return false; } } |
--------------------------------------------------------------------------------
The reason for using random (m-n+1) is because the range of random numbers is m-n, plus 1 allows m to be inside. Plus n guarantees that the random number is lower than N.
Plus judgment makes the function more complete. In addition, if you want to return a negative number of random numbers, you can also use RANDOMNM (n,0); Of course, I think more generally with-random (n);
# 3: Returns a letter
The code is as follows |
Copy Code |
--------------------------------------------------------------------------------
function Randomascii () { var c = String.fromCharCode (Random (26) +65); if (random (2)) { return C.tolowercase (); } return C; } |
--------------------------------------------------------------------------------
#4: Returns a case-insensitive random letter
If you want to return uppercase, you can remove the if condition sentence. If you want to return to lowercase, you can change the conditional sentence to permanent, or remove the condition, the last sentence should read:
return C.tolowercase (); The String.fromCharCode (number) function returns the ASCII code of numbers that represents the digits.
toLowerCase () is used to convert uppercase letters to lowercase.
# 5: Returns a K-reciprocal random number between N and M
The code is as follows |
Copy Code |
function Randomkdiffer (n,m,k) { Arrayk = []; var i = 0; while (I < k) { A = random (m-n+1) +n; for (var j = 0; J < i; J + +) { if (a = = Arrayk[j]) { Break } } if (j = = i) { Arrayk[i] = A; i++; } } return Arrayk; }
|