Αν μιλαμε για μια ασκηση (ή απλα κατι που δεν απαιτει κρυπτογραφικο PRNG), και δεν σου αρκει η srand() τοτε ο Mersenne Twister θα σου φανει χρησιμος<br><br><a href="http://en.wikipedia.org/wiki/Mersenne_twister">http://en.wikipedia.org/wiki/Mersenne_twister</a><br>
<br><div class="gmail_quote">2009/10/26 a125 <span dir="ltr"><<a href="mailto:a125@fateback.com">a125@fateback.com</a>></span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Christos Bacharakis wrote:<br>
<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div><div></div><div class="h5">
2009/10/26 Christos Bacharakis <<a href="mailto:cmpahar@gmail.com" target="_blank">cmpahar@gmail.com</a>><br>
<br>
<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
2009/10/26 Aravanis Konstantinos <<a href="mailto:kos.arav@gmail.com" target="_blank">kos.arav@gmail.com</a>><br>
<br>
Giorgos Keramidas wrote:<br>
<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
On Mon, 26 Oct 2009 02:17:29 +0200, Christos Bacharakis <<br>
<a href="mailto:cmpahar@gmail.com" target="_blank">cmpahar@gmail.com</a>> wrote:<br>
<br>
<br>
<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Καλησπέρα!<br>
<br>
Θα ήθελα την προγραμματιστική βοήθεια σας.<br>
<br>
Θέλω να δημιουργήσω 7 τυχαίους αριθμούς οι οποίοι θα έχουν τιμές από 1<br>
έως 7. Ο λόγος που θέλω να το κάνω αυτό είναι για να αλλάζει σε κάθε<br>
εκτέλεση η σειρά των αριθμών. Η γλώσσα που υλοποιώ το πρόγραμμα είναι<br>
C++.<br>
<br>
Μια δικιά μου προσέγγιση η οποία όμως σε κάθε εκτέλεση μου βγάζει τα<br>
ίδια αποτελέσματα!!!<br>
<br>
for(i=0; i<8; i++){<br>
pin[i]=i;<br>
}<br>
<br>
for(i=0; i<8; i++){<br>
j=rand() % 7;<br>
k=rand() % 7;<br>
swap(pin[j],pin[k]);<br>
<br>
}<br>
<br>
<br>
<br>
</blockquote>
... αν θέλεις να παράγεις διαφορετικούς αριθμούς σε κάθε τρέξιμο,<br>
ίσως χρειαστεί να δώσεις στην srand() ένα πιο «τυχαίο» seed value...<br>
<br>
<br>
</blockquote>
πχ.<br>
<br>
#include <stdio.h><br>
#include <stdlib.h><br>
<br>
int main(void)<br>
{<br>
int i, pin[8];<br>
srand(time(0));<br>
<br>
<br>
for(i=0; i<8; i++)<br>
pin[i] = rand()%7;<br>
}<br>
<br>
<br>
<br>
--<br>
Aravanis Kostas<br>
My web page: <a href="http://www.AravanisKostas.com" target="_blank">www.AravanisKostas.com</a> <<a href="http://www.aravaniskostas.com" target="_blank">www.aravaniskostas.com</a>><br>
An easy way to learn Python: www.TasPython.eu<br>
<br>
Γιώργο, Γιάννη, Κώστα σας ευχαριστώ πάρα πολύ!<br>
<br>
</blockquote>
Κώστα, το θέμα όμως είναι ότι θέλω μοναδικούς αριθμούς, όχι απλά τυχαίους!<br>
<br>
--<br>
Christos Bacharakis<br>
<a href="mailto:cmpahar@gmail.com" target="_blank">cmpahar@gmail.com</a><br>
<a href="http://bacharakis.com" target="_blank">http://bacharakis.com</a><br>
<br>
<br>
<br>
</blockquote>
thanks και πάλι σε όλους. Το έκανα με srand() και δουλεύει τέλεια! :)<br>
<br>
<br></div></div>
------------------------------------------------------------------------<br>
<br>
<br>
<br>
</blockquote><div><div></div><div class="h5">
<br>
<br>
#include<map.h><br>
#include <time.h><br>
<br>
//use this first function to seed the random number generator,<br>
//call this before any of the other functions<br>
void initrand()<br>
{<br>
srand((unsigned)(time(0)));<br>
}<br>
<br>
//generates a psuedo-random integer between 0 and 32767<br>
int randint()<br>
{<br>
return rand();<br>
}<br>
<br>
//generates a psuedo-random integer between 0 and max<br>
int randint(int max)<br>
{<br>
return int(max*rand()/(RAND_MAX+1.0));<br>
}<br>
<br>
//generates a psuedo-random integer between min and max<br>
int randint(int min, int max)<br>
{<br>
if (min>max) {<br>
return max+int((min-max+1)*rand()/(RAND_MAX+1.0));<br>
} else {<br>
return min+int((max-min+1)*rand()/(RAND_MAX+1.0));<br>
}<br>
}<br>
<br>
//generates a psuedo-random float between 0.0 and 0.999...<br>
float randfloat()<br>
{<br>
return rand()/(float(RAND_MAX)+1);<br>
}<br>
<br>
//generates a psuedo-random float between 0.0 and max<br>
float randfloat(float max)<br>
{<br>
return randfloat()*max;<br>
}<br>
<br>
//generates a psuedo-random float between min and max<br>
float randfloat(float min, float max)<br>
{<br>
if (min>max) {<br>
return randfloat()*(min-max)+max;<br>
} else {<br>
return randfloat()*(max-min)+min;<br>
}<br>
}<br>
<br>
//generates a psuedo-random double between 0.0 and 0.999...<br>
double randdouble()<br>
{<br>
return rand()/(double(RAND_MAX)+1);<br>
}<br>
<br>
//generates a psuedo-random double between 0.0 and max<br>
double randdouble(double max)<br>
{<br>
return randdouble()*max;<br>
}<br>
<br>
//generates a psuedo-random double between min and max<br>
double randdouble(double min, double max)<br>
{<br>
if (min>max) {<br>
return randdouble()*(min-max)+max;<br>
} else {<br>
return randdouble()*(max-min)+min;<br>
}<br>
}<br>
<br>
<br>
int main(void)<br>
{<br>
initrand();<br>
// τώρα αρχίζεις να παράγεις αριθμούς που σε ενδιαφέρουν βάζοντάς τους σε μια λίστα μοναδιαίων<br>
// δηλαδή θα χρειαστεί από STL ...<a href="http://www.cplusplus.com/reference/stl/map/" target="_blank">http://www.cplusplus.com/reference/stl/map/</a><br>
<br>
map<pair(int,int)> amap;<br>
int i=0;<br>
while(i<10){<br>
int k= .... η συνάρτηση που θα διαλέξεις ...<br>
amap.push_back(pair(i,k));<br>
i=amap.size(); // αυτό σημαίνει ότι αν έχει μεγαλώσει το amap θα αυξηθεί ο δείκτης i<br>
// και για να γίνει αυτό πρέπει το ζευγάρι i,k να μην υπάρχει.<br>
μπορείς να το κάνεις και χωρίς ζευγάρι<br>
τα map έχουν μοναδικά στοιχεία ...<br>
δεν τόχω δοκιμάσει, αλλά είναι μια σκέψη ...<br>
}<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
-- <br></div></div><div><div></div><div class="h5">
linux-greek-users mailing list -- <a href="http://lists.hellug.gr" target="_blank">http://lists.hellug.gr</a></div></div></blockquote></div><br>