Αν μιλαμε για μια ασκηση (ή απλα κατι που δεν απαιτει κρυπτογραφικο 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">&lt;<a href="mailto:a125@fateback.com">a125@fateback.com</a>&gt;</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 &lt;<a href="mailto:cmpahar@gmail.com" target="_blank">cmpahar@gmail.com</a>&gt;<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 &lt;<a href="mailto:kos.arav@gmail.com" target="_blank">kos.arav@gmail.com</a>&gt;<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 &lt;<br>
<a href="mailto:cmpahar@gmail.com" target="_blank">cmpahar@gmail.com</a>&gt; 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&lt;8; i++){<br>
pin[i]=i;<br>
}<br>
<br>
for(i=0; i&lt;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 &lt;stdio.h&gt;<br>
#include &lt;stdlib.h&gt;<br>
<br>
int main(void)<br>
{<br>
     int i, pin[8];<br>
     srand(time(0));<br>
<br>
<br>
     for(i=0; i&lt;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> &lt;<a href="http://www.aravaniskostas.com" target="_blank">www.aravaniskostas.com</a>&gt;<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&lt;map.h&gt;<br>
#include &lt;time.h&gt;<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&gt;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&gt;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&gt;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&lt;pair(int,int)&gt; amap;<br>
int i=0;<br>
while(i&lt;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>