我試圖在C中產生一個80個字符的固定字符串的隨機排列。很令我沮喪的是,我正在工作的系統缺少strfry()。生成這個字符串的隨機排列的最好方法是什麼?由於這將循環大約。 100,000次,性能是一個問題。在C中隨機化一個字符串
6
A
回答
13
只需使用開源GLIBC實現,如Google Code所示。
char *
strfry (char *string)
{
static int init;
static struct random_data rdata;
size_t len, i;
if (!init)
{
static int state[8] = { 1, 2, 3, 4, 5, 6, 7, 8 };
rdata.state = NULL;
__initstate_r (time ((time_t *) NULL), state, 8, &rdata);
init = 1;
}
len = strlen (string);
for (i = 0; i < len; ++i)
{
int32_t j;
char c;
__random_r (&rdata, &j);
j %= len;
c = string[i];
string[i] = string[j];
string[j] = c;
}
return string;
}
您可能想要將GLIBC特定數據類型更改爲更通用的。
此代碼使用Fisher-Yates shuffle這實際上很容易實現,並且非常高效。
-2
空隙gcry_randomize(無符號字符*緩衝液中,爲size_t長度,枚舉gcry_random_level電平)與使用如由電平所定義的隨機質量長度隨機字節
填充緩衝器。
0
創建一個80行陣列,把一個字符和一個隨機數到所述陣列的每一行,則該隨機數字對數組進行排序。
從排序的數組中重建字符串。
相關問題
- 1. 隨機化字符串中的字符?
- 2. 隨機化字符串
- 3. 在一個字符串中隨機播放字母C++
- 4. 在字符串中隨機化字母C
- 5. 如何在字符串中隨機替換一個字符?
- 6. 如何隨機化62個字符的整個字符串?
- 7. 如何將C中兩個字符串的字符隨機組合在一起?
- 8. 構建一個隨機字符串
- 9. C程序中找到一個隨機字符串
- 10. C套接字 - 一次隨機接收多個字符串
- 11. 在Qt4中創建一個隨機字符串或數字
- 12. 隨機化字符串選擇
- 13. 使用UILocalNotification與隨機化字符串
- 14. 隨機化字符串的大小寫
- 15. 將字符串隨機插入另一個字符串
- 16. 我如何隨機化一個字符串?
- 17. C++隨機字符
- 18. C字符串有隨機尾隨字符,空終止問題?
- 19. 在表格中隨機分配一個字符串
- 20. 如何在Android中隨機選擇一個字符串?
- 21. 在Java中生成一個隨機的字符串
- 22. 在NSMutableString中查找一個隨機字符串
- 23. 如何在XNA中調用一個隨機字符串?
- 24. 在java中隨機選擇字符串
- 25. 將隨機字符組合成一個字符串Java
- 26. 如何隨機選擇三個字符串中的一個?
- 27. 我需要在java中隨機刪除一個字符串中的一半字
- 28. 用隨機字符替換字符串中的每個數字
- 29. MySQL隨機唯一字符串
- 30. getNodeValue()返回一些隨機字符串
您可能想更改那裏的專有詞,否則Stallman可能會用他的武士刀讓你。一個適當的替代品可能是GLIBC特定的。 – 2008-12-31 10:32:28
康拉德,你是一個紳士和學者!我試着搜索谷歌代碼,但我正在尋找諸如「隨機化c中的字符串」而不是簡單地'strfry'。謝謝! – Max 2008-12-31 10:52:21