我需要一种方法用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. JavaScript正则表达式允许AZ,az或0-9&@等
- 4. 正则表达式:0-9 AZ AZ或任何这些* + -/=^_`{|}〜
- 5. Mysql的像字符[AZ]或零
- 6. 与AZ部分
- 7. .net错误不支持文化名'az-az'。参数名:名
- 8. 包含“AZ”,“az”,“0-9”,“ - ”,“()”,“&”,“/”,“\”,“,”的文本的正则表达式
- 9. 搜索一个数组,并删除项,如果它不包含AZ或AZ用破折号
- 10. Kubernetes - Cross AZ流量
- 11. 的preg_replace保持空间,如果开始用AZ与AZ
- 12. XQuery - 删除所有不是{AZ,az,_,0-9}的字符(非法)
- 13. 会话ID过长或含有非法字符,有效字符包括AZ,az,0-9和 ' - '
- 14. 捕捉az实验失败
- 15. 的mod_rewrite不允许AZ
- 16. 密码至少[1-9]至少[az]至少[AZ]无特殊字符
- 17. 1个ELB每个AZ和1个ELB到多个AZ的区别
- 18. Azure的CLI未能上'AZ组件update`
- 19. 随机MySQL查询?或者随机化一个结果?
- 20. 打印出我的letterList数组时,为什么我的程序跳过数字?它仅打印出AZ和AZ
- 21. 从ASP.NET站点地图生成AZ
- 22. 部署后Azure Web角色预热
- 23. 部署后Azure MVC ServiceConfiguration.cscfg更改
- 24. “az login --allow-no-subscriptions”不再支持?
- 25. 如何反复写入然后读取管道中的数据,如输入“cat | tr az AZ”
- 26. mac-az命令未找到azure
- 27. 威尔[AZ] *重定向在httpd.conf工作
- 28. Android:PopUp窗口,如AZ屏幕录像机应用程序
- 29. 列出某个地区或AZ中的所有EC2实例类型
- 30. Warning:session_start()[function.session-start]:会话ID包含非法字符,有效字符是az,AZ,0-9和' - ',
作业?没问题,只要告诉我们。 – pmg 2011-04-19 21:02:37
这是作业的一部分 – marco 2011-04-19 21:04:30