CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

请教生成随机字符的问题

楼主crystalbi()2006-12-02 15:41:34 在 C/C++ / C++ 语言 提问

我想生成随机字符  
  ch   =   numeric_limits<char>::min()+((numeric_limits<char>::max()-numeric_limits<char>::min())*std::rand())/RAND_MAX;  
   
   
  RAND_MAX的值由srand(static_cast<unsigned   int>(time(0)));确定  
   
  请问为什么有时ch会返回负值? 问题点数:20、回复次数:5Top

1 楼zmx0506(风之伤)回复于 2006-12-02 15:55:24 得分 0

楼主的   代码很不规范,我看过去一下还没反映过来。  
   
  这样的代码我也拿不准了,因为你里面那几个函数我都没像你这么用过。Top

2 楼crystalbi()回复于 2006-12-02 16:23:31 得分 0

srand(static_cast<unsigned   int>(time(0)));是调用了系统时间生成一个rand()的种子值,  
   
  上边表达式的意思是(char类型的最小值+(char类型的最大值-char类型的最小值))×(0到1之间的一个数)  
  char类型的范围是(-128~127)  
   
  这种用法是红皮书Ivor   Horton的C++入门经典里的,我用的是VC++2005.NET,代码我一个字都没改  
   
  为什么返回负数呢?  
  Top

3 楼jacknes009(阿丁)回复于 2006-12-02 17:15:21 得分 20

char   ch;  
   
  srand(static_cast<char>(time(0)));  
    // ch   =   numeric_limits<int>::min();  
   
  ch   =   numeric_limits<char>::min()+((numeric_limits<char>::max()-numeric_limits<char>::min())*std::rand())%RAND_MAX;  
  int   pp   =   ch;  
  cout<<ch<<endl;  
  cin>>ch;  
  return   0;  
   
  应该这样把,,你在看下把,,我试了下,,可以Top

4 楼crystalbi()回复于 2006-12-02 17:31:19 得分 0

确实那表达式错了,眼花了,唉Top

5 楼crystalbi()回复于 2006-12-02 17:33:25 得分 0

不过%还应该换成/Top

相关问题

关键词

得分解答快速导航

  • 帖主:crystalbi
  • jacknes009

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo