隨機字串

2021-07-09 20:14:46 字數 1659 閱讀 2302

直接產生隨機的字串的庫函式是沒有的,但是可以這麼實現:

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...