2011-03-16 wcdj
Question
: A combination of 5 to 5 characters including numbers and uppercase/lowercase letters. The characters are case sensitive and do not contain X and X.
One method I implemented:
Idea: "Deduct an element randomly and raise the last element up ".
# Include <stdio. h> <br/> # include <stdlib. h> <br/> # include <time. h> <br/> # define N 60 <br/> void print () <br/>{< br/> char a [n + 1] = "0123456789 abcdefghijklmnopqrstuvwyzabcdefghilmnopqrstuvwyz "; <br/> for (INT I = 0; I <25; ++ I) <br/>{< br/> int r = rand () % (n-I); <br/> printf ("% C", a [R]); <br/> I & (I + 1) % 5 = 0? Printf ("/N"): NULL; <br/> A [R] = A [N-i-1]; <br/>}< br/> printf ("/N"); <br/>}< br/> int main () <br/>{< br/> srand (unsigned INT) time (0); <br/> Print (); <br/> Print (); <br/> return 0; <br/>}< br/>
Zhao4zhong1 provides the following methods:
# Include <stdio. h> <br/> # include <stdlib. h> <br/> # include <time. h> <br/> # define N 60 <br/> char s [n + 1] = "0123456789 abcdefghijklmnopqrstuvwyzabcdefghijklmnopqrstuvwyz"; <br/> int d [N]; <br/> int I, A, B, t, x, y, C; <br/> char Z [5] [5]; <br/> void main () {<br/> srand (Time (null); <br/> for (C = 0; C <10; C ++) {<br/> for (I = 0; I <n; I ++) d [I] = I;/* fill in ~ N-1 */<br/> for (I = N; I> 0; I --) {/* disrupt ~ N-1 */<br/> A = I-1; B = rand () % I; <br/> if (! = B) {T = d [a]; d [a] = d [B]; d [B] = T ;} <br/>}< br/> for (y = 0; y <5; y ++) {<br/> for (x = 0; x <5; X ++) {<br/> Z [y] [x] = s [d [y * 5 + x]; <br/> printf ("% C ", Z [y] [x]); <br/>}< br/> printf ("/N "); <br/>}< br/> printf ("--- % d ---/N", C ); <br/>}< br/> // y6obg <br/> // mtwko <br/> // 7 ppen <br/> // cn8lg <br/> // 2dv0j <br/> // --- 0 --- <br/> // w56b4 <br/> // dtds8 <br/> // v9ant <br/> // cgfe7 <br/> // waizr <br/> // --- 1 --- <br/>
Refer:
A previously summarized question with the same idea-how to select different random numbers