我需要一種方法用C即十進制65-90 [a
- z
]之間的隨機數和小數97-122 [A
- Z
]返回。如果我調用這個方法,那麼這個方法必須是一個不同的數字,回饋他先前給出的方法。我如何在C中執行此操作?隨機數或者65- 90 [AZ]或97-122 [AZ]
1
A
回答
2
#include <stdlib.h>
char rand_az_AZ() {
char val = rand() % 52;
if (val < 26) {
val += 'a';
} else {
val -= 26;
val += 'A';
}
return val;
}
1
給定一個功能random_in_range
,在範圍[0,n)返回隨機整數:
char random_letter()
{
static const char letters[] = "abcdefghijlkmnopqrstuvwxyz"
"ABCDEFGHIJLKMNOPQRSTUVWXYZ";
return letters[random_in_range(sizeof(letters))];
}
(A簡單實現的random_in_range(n)
將返回rand() % n
這將不會返回均勻分佈的整數,雖然)。
+0
我麻煩做rand()和srand() – marco 2011-04-19 21:05:24
2
你可以做一個0到52之間的隨機數(不包括52)嗎?
做到了!將65添加到結果中。如果值爲91或更大,則在第二個結果中加6。 Voilà!
喔......如果數量是一樣的,從上次一個(你在一個靜態變量保存的最後一個數字,不是嗎?),再做一次:)
0
UPDATE 2
根據Interjay的評論再次更新。
UPDATE
每Interjay的評論所做的更改。還改變了pickChar,以便我們不依賴於特定的編碼。
警告:不建議使用%
操作符將rand
的結果映射到不同的範圍。不保證低位模式的均勻分佈,並且可以得到非正態分佈的值。它適用於班級任務,但下面的程序應該會給出更好的結果:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int randInRange(int min, int max)
{
return (int)(((double) rand()/(double)(RAND_MAX + 1)) * (max - min + 1)) + min;
}
char pickChar(void)
{
char val;
int cas = randInRange(0, 1);
if (cas == 1)
val = (char) randInRange('A', 'Z');
else
val = (char) randInRange('a', 'z');
return val;
}
int main(void)
{
char results[11] = {0};
int i;
srand(time(NULL)); // seed the random number generator
for (i = 0; i < sizeof results - 1; i++)
results[i] = pickChar();
printf("Random string: %s\n", results);
return 0;
}
相關問題
- 1. 的Oracle SQL - REGEXP_LIKE包含除AZ或az
- 2. 的Android只接受az和AZ
- 3. 外匯牌價異國情調的字符AZ,az或0-9
- 4. 正則表達式:0-9 AZ AZ或任何這些* + -/=^_`{|}〜
- 5. JavaScript正則表達式允許AZ,az或0-9&@等
- 6. MySQL正則表達式[az] \。[az]但不是am或pm
- 7. java的正則表達式[AZ] {6} - [AZ] {4} - [AZ] {4}
- 8. TR [AZ] [AZ]示出了誤差在UNIX
- 9. Mysql的像字符[AZ]或零
- 10. 爲AZ或正則表達式1-8
- 11. Java的正則表達式:AZ和 - 或者_,但只有一次
- 12. 與AZ部分
- 13. 匹配字符串,而不是由AZ或AZ開頭,幷包含1324
- 14. 在oracle中,如何將屬於[az] [AZ]的列中的字符數據轉換爲一些隨機字符x
- 15. 字母(az)
- 16. .net錯誤不支持文化名'az-az'。參數名:名
- 17. ansible EC2 AZ變量
- 18. 給出一個數組AZ直到可能ZZZ ......用PHP或者Python
- 19. 包含「AZ」,「az」,「0-9」,「 - 」,「()」,「&」,「/」,「\」,「,」的文本的正則表達式
- 20. 搜索一個數組,並刪除項,如果它不包含AZ或AZ用破折號
- 21. MYSQL爲200行生成5個隨機字符(1-9,AZ)
- 22. Kubernetes - Cross AZ流量
- 23. 的preg_replace保持空間,如果開始用AZ與AZ
- 24. XQuery - 刪除所有不是{AZ,az,_,0-9}的字符(非法)
- 25. 會話ID過長或含有非法字符,有效字符包括AZ,az,0-9和 ' - '
- 26. 捕捉az實驗失敗
- 27. 的mod_rewrite不允許AZ
- 28. 確保用戶名只包含:包括AZ,az,_, - ,0-9(沒有逗號)PHP
- 29. TSQL模式[^ AZ]發現AA
- 30. 正則表達式 「(?<!^)(?= [AZ])」
作業?沒問題,只要告訴我們。 – pmg 2011-04-19 21:02:37
這是作業的一部分 – marco 2011-04-19 21:04:30