直接產生隨機的字串的庫函式是沒有的,但是可以這麼實現:
1.產生固定長度的隨機的字串
主要就是產生固定個數的隨機字元,
那麼就簡單了,用兩組隨機數:
一組:隨機產生0~25的整數num,然後用』a』+num來賦值小寫字母,』a』+num來賦值大寫字母
一組:隨機產生0,1,產生0,用』a』來和num相加,生成小寫字母;產生1,用』a』來和num相加,生成大寫字母;
2.產生不固定長度的隨機的字串
就是在上面的產生固定長度的隨機的字串的基礎上,在引入一組隨機數,來控制字串長度
**如下:
//產生固定長度的隨機的字串
#include
#include
#include
#include
#define n 10//固定長度為10
void main()
; srand((unsigned)time(null));
for(i=0;i<10;i++)//生成10個string
ch[k]='\0';
k=0;
printf("%s\n",ch);
}}
//產生長度為length的隨機字串
char* genrandomstring(int length)
for (i = 0; i < length - 1; i++)
} string[length - 1] = '\0';
return
string;
}
在c語言中獲取隨機數的函式是rand();
乙個合格的隨機數值必須由獲取到的值足夠雜湊,以及值不可預知的特性,但如果不做任何處理直接呼叫rand(),那麼得到的值是固定的。下面是乙個例子:
#include
#include
int main()
執行這個程式,看起來沒什麼問題,因為獲取到的10個數字都是雜湊的,很有隨機數的感覺。但重複執行這個程式就會發現,每次執行得到的十個數都是同樣的,這個並不符合不可預知的特性。
所以c語言中的隨機數函式rand()被稱為偽隨機數。
通過srand函式,可以讓這個偽隨機數更「真」一些,它的原理是設定乙個隨機數種子,然後後續的隨機數依賴於種子值。
#include
#include
int main()
return
0; }
反覆執行這個程式,會發現,相同的隨機數種子獲取到的隨機數值同樣是相同的。這樣這個隨機數種子值又不能是固定值了,於是需要想辦法讓這個種子值有變化。
讓這個值有變化的方法有很多種,最常用的就是通過時間函式time()。這個函式是獲取當前時間值的,單位是毫秒。通常的呼叫方式是time(null);
用這個值來做隨機數種子可以讓每次呼叫得到的種子值不同,因為要達到完全相同的效果,必須要在毫秒級的相同時間下同時執行,這個概率太低了。
於是time(null)就成了最常用的隨機數種子。
以上就是srand(time(null));
經常放在隨機數發生前作為隨機數種子的原因了。
隨機字串
region 隨機字串 生成隨機字串 指定長度 是否允許重複 種子值 只需要第0個值,null表示使用預設種子值 字符集 public static string random int length,bool repeat,int seed,params char all random rnd ne...
生成隨機字串
原文出處 估摸著以後極有可能使用到,於是寫了乙個生成隨機字串的函式。可以自定義生成規則,生成字串長度。模仿了ms的函式風格,生成規則使用巨集的或且規則,返回值使用了布林型。這裡使用布林返回可能作用不大。直接貼 吧,同樣是兩個檔案。randomstring.h pragma once define r...
生成隨機字串
產生隨機字串,可用來自動生成密碼 預設長度6位 字母和數字混合 param string len 長度 param string type 字串型別 0 字母 1 數字 其它 混合 param string addchars 額外字元 return string function rand stri...