随机字符 随机数 和 int转换char 有关问题
随机字符 随机数 和 int转换char 问题
程序目的:产生两个随机字符
我的期望过程: 随机生成两个随机数。 根据ASCII 码 把 随机数转换成 字符型
结果:随机数不同。 但是转换成 字符型之后 却变得一样
求解
------解决方案--------------------
不需要这么麻烦!
程序目的:产生两个随机字符
我的期望过程: 随机生成两个随机数。 根据ASCII 码 把 随机数转换成 字符型
结果:随机数不同。 但是转换成 字符型之后 却变得一样
求解
- C/C++ code
#include <iostream> #include <unistd.h> #include <stdlib.h> #include <string.h> #include <stdio.h> #include <time.h> using namespace std; // A~Z 65~90 // a~z 97~122 int main() { srand (time(NULL)); char * pwd; pwd = crypt("test", "ab"); //char *crypt(const char *key, const char *salt); // char * salt is a-z A-Z 0-9 ./ // char * key is user typed in password cout <<"after crypt()= "<< pwd << endl; char word_1; char word_2; int num_1; int num_2; word_1 = (rand()%26)+'a';// always generate same value word_2 = (rand()%26)+'a';// 这里两个随机字符 总是相同 num_1 = rand()%122+65; num_2 = rand()%122+65; while (word_1==word_2)// got different value 这里解决了随机数总是相同的问题 { word_2 = (rand()%26)+'a'; } word_1 = num_1;// 根据 ASCII 转换成char型 期望得 word_1 和 word_2 得到不同的字符 word_2 = num_2;// 随机数不同了 但是这里得到的两个 char 字符 却又相同了 cout << "random word_1= " << word_1 << endl; cout << "random word_2= " << word_1 << endl; cout << "random num_1= " << num_1 << endl; cout << "random num_2= " << num_2 << endl; cout << "int to char word_1= " << word_1 << endl; cout << "int to char word_2= " << word_1 << endl; return 0; }
------解决方案--------------------
不需要这么麻烦!
- C/C++ code
/*- * Copyright (C) * * $Id$ * * $Log$ */ #ifndef lint static const char rcsid[] = "$Id$"; static const char relid[] = "$""Date: "__DATE__" "__TIME__" "__FILE__" $"; #endif /* not lint */ /** * @file * @brief */ #include <stdio.h> #include <stdlib.h> #include <time.h> const char charset[] = "0123456789" "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "abcdefghijklmnopqrstuvwxyz"; int randchar(void) { return charset[rand() % (sizeof(charset) - 1)]; } int main(int argc, char *argv[]) { int i; srand(time(0)); for (i = 0; i < 72; i++) putchar(randchar()); putchar('\n'); return 0; }