Zufällige Zuweisung

  • PHP

  • Schneidross
  • 1195 Aufrufe 6 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Zufällige Zuweisung

    Hi Leute

    Ich habe ein Problem:
    Ich weiß zwar, wie ich mit PHP einer bestimmten Var eine zufällige Zahl zuweisen kann, aber ich suche eine Funktion, mit der ich den wert von insgesamt 20 Variablen ZUFÄLLIG anderen 20 Variablen zuweisen kann.

    Ich würde mich über eine schnelle Antwort freuen

    so long
    Schneidross
  • hmm....

    und wie kann ich das dann genau anwenden?
    Eigentlich geht es mir darum die Zahlen 1 - 10 auf 20 variablen zu verteilen (so dass jede zahl von 1 bis 10 genau 2 mal vorkommt)
    An Ende sollten meine 20 variablen zufällig den wert 1 - 10 haben und immer 2variablen haben den gleichen wert

    so long
    Schneidross
  • Hi
    Also wie ich dich richtig verstanden habe.
    20 Variablen mit den Werten aus verschiedenen Zahlen von 1-10.
    Wär dann sowas:

    PHP-Quellcode

    1. <?php
    2. for ($i=1;$i<=20;$i++) {
    3. $var = rand(1, 10);
    4. echo "".$var."<br>";
    5. }
    6. ?>

    greetz mortician
    [size=1][FONT="Courier New"]###############_###_####_
    #_ __ #___ _ _| |_(_)__(_)__ _ _ _###############new uploads: [1] [2] [3] [4] [5] [6] [7] [8]
    |#'##\/ _ \ '_|##_| / _| / _` | ' \
    |_|_|_\___/_|##\__|_\__|_\__,_|_||_|###############Bis 28. Sept. weg[/FONT][/size]
  • Hallo,

    warum willst du denn zwei Mal den selben Wert haben?
    Was man zu Zufallszahlen noch im Kopf haben muss: Es sind keine echten Zufallszahlen, sondern mathematische "Zufalls"zahlen. Also nicht für Verlosungen oder ähnliches nutzen. Könnte Ärger geben... ;)

    ew_h2002
  • ich brauche jeden wert von 1 bis 10 genau 2 mal und zwar verteilt auf die variablen 1 bis 20. Deshalb hilft mir der code nicht weiter

    trotzdem vielen vielen dank für eure bemühungen

    Schneidross

    PS.:Wird nicht für ne Auslosung o.Ä. benutzt, bin mir über die beschaffenheit der zufallszahlen in php bewusst


    Schneidross vom 22.12.2005 schrieb:

    so leute

    also ich habe jetzt eine mehr oder minder gute lösung für mein Problem gefunden, die jedoch ein neues problem in den Raum wirft. Das programm funktioniert nur bei schätzungsweise jeden 10. anlauf, bei allen anderen anläufen hängt sich das programm auf.
    Meine theorie ist, dass es an der function liegt, die ich im folgenden zeige:

    PHP-Quellcode

    1. <?php
    2. function zufallszuweisung(){
    3. $stelle1 = mt_rand(1,10);
    4. $stellenarray[$stelle1] = $stellenarray[$stelle1] + 1;
    5. $zufallszuweisungsarray[1] = $stelle1;
    6. $stelle2 = mt_rand(1,10);
    7. $stellenarray[$stelle2] = $stellenarray[$stelle2] + 1;
    8. $zufallszuweisungsarray[2] = $stelle2;
    9. $stelle3 = mt_rand(1,10);
    10. while ($stellenarray[$stelle3] == 2){
    11. if ($stelle3 >= 2){
    12. $stelle3 = $stelle3 - 1;
    13. }
    14. else{
    15. $stelle3 = $stelle3 + 1;
    16. }
    17. }
    18. $stellenarray[$stelle3] = $stellenarray[$stelle3] + 1;
    19. $zufallszuweisungsarray[3] = $stelle3;
    20. $stelle4 = mt_rand(1,10);
    21. while ($stellenarray[$stelle4] == 2){
    22. if ($stelle4 >= 2){
    23. $stelle4 = $stelle4 - 1;
    24. }
    25. else{
    26. $stelle4 = $stelle4 + 1;
    27. }
    28. }
    29. $stellenarray[$stelle4] = $stellenarray[$stelle4] + 1;
    30. $zufallszuweisungsarray[4] = $stelle4;
    31. $stelle5 = mt_rand(1,10);
    32. while ($stellenarray[$stelle5] == 2){
    33. if ($stelle5 >= 2){
    34. $stelle5 = $stelle5 - 1;
    35. }
    36. else{
    37. $stelle5 = $stelle5 + 1;
    38. }
    39. }
    40. $stellenarray[$stelle5] = $stellenarray[$stelle5] + 1;
    41. $zufallszuweisungsarray[5] = $stelle5;
    42. $stelle6 = mt_rand(1,10);
    43. while ($stellenarray[$stelle6] == 2){
    44. if ($stelle6 >= 2){
    45. $stelle6 = $stelle6 - 1;
    46. }
    47. else{
    48. $stelle6 = $stelle6 + 1;
    49. }
    50. }
    51. $stellenarray[$stelle6] = $stellenarray[$stelle6] + 1;
    52. $zufallszuweisungsarray[6] = $stelle6;
    53. $stelle7 = mt_rand(1,10);
    54. while ($stellenarray[$stelle7] == 2){
    55. if ($stelle7 >= 2){
    56. $stelle7 = $stelle7 - 1;
    57. }
    58. else{
    59. $stelle7 = $stelle7 + 1;
    60. }
    61. }
    62. $stellenarray[$stelle7] = $stellenarray[$stelle7] + 1;
    63. $zufallszuweisungsarray[7] = $stelle7;
    64. $stelle8 = mt_rand(1,10);
    65. while ($stellenarray[$stelle8] == 2){
    66. if ($stelle8 >= 2){
    67. $stelle8 = $stelle8 - 1;
    68. }
    69. else{
    70. $stelle8 = $stelle8 + 1;
    71. }
    72. }
    73. $stellenarray[$stelle8] = $stellenarray[$stelle8] + 1;
    74. $zufallszuweisungsarray[8] = $stelle8;
    75. $stelle9 = mt_rand(1,10);
    76. while ($stellenarray[$stelle9] == 2){
    77. if ($stelle9 >= 2){
    78. $stelle9 = $stelle9 - 1;
    79. }
    80. else{
    81. $stelle9 = $stelle9 + 1;
    82. }
    83. }
    84. $stellenarray[$stelle9] = $stellenarray[$stelle9] + 1;
    85. $zufallszuweisungsarray[9] = $stelle9;
    86. $stelle10 = mt_rand(1,10);
    87. while ($stellenarray[$stelle10] == 2){
    88. if ($stelle10 >= 2){
    89. $stelle10 = $stelle10 - 1;
    90. }
    91. else{
    92. $stelle10 = $stelle10 + 1;
    93. }
    94. }
    95. $stellenarray[$stelle10] = $stellenarray[$stelle10] + 1;
    96. $zufallszuweisungsarray[10] = $stelle10;
    97. $stelle11 = mt_rand(1,10);
    98. while ($stellenarray[$stelle11] == 2){
    99. if ($stelle11 >= 2){
    100. $stelle11 = $stelle11 - 1;
    101. }
    102. else{
    103. $stelle11 = $stelle11 + 1;
    104. }
    105. }
    106. $stellenarray[$stelle11] = $stellenarray[$stelle11] + 1;
    107. $zufallszuweisungsarray[11] = $stelle11;
    108. $stelle12 = mt_rand(1,10);
    109. while ($stellenarray[$stelle12] == 2){
    110. if ($stelle12 >= 2){
    111. $stelle12 = $stelle12 - 1;
    112. }
    113. else{
    114. $stelle12 = $stelle12 + 1;
    115. }
    116. }
    117. $stellenarray[$stelle12] = $stellenarray[$stelle12] + 1;
    118. $zufallszuweisungsarray[12] = $stelle12;
    119. $stelle13 = mt_rand(1,10);
    120. while ($stellenarray[$stelle13] == 2){
    121. if ($stelle13 >= 2){
    122. $stelle13 = $stelle13 - 1;
    123. }
    124. else{
    125. $stelle13 = $stelle13 + 1;
    126. }
    127. }
    128. $stellenarray[$stelle13] = $stellenarray[$stelle13] + 1;
    129. $zufallszuweisungsarray[13] = $stelle13;
    130. $stelle14 = mt_rand(1,10);
    131. while ($stellenarray[$stelle14] == 2){
    132. if ($stelle14 >= 2){
    133. $stelle14 = $stelle14 - 1;
    134. }
    135. else{
    136. $stelle14 = $stelle14 + 1;
    137. }
    138. }
    139. $stellenarray[$stelle14] = $stellenarray[$stelle14] + 1;
    140. $zufallszuweisungsarray[14] = $stelle14;
    141. $stelle15 = mt_rand(1,10);
    142. while ($stellenarray[$stelle15] == 2){
    143. if ($stelle15 >= 2){
    144. $stelle15 = $stelle15 - 1;
    145. }
    146. else{
    147. $stelle15 = $stelle15 + 1;
    148. }
    149. }
    150. $stellenarray[$stelle15] = $stellenarray[$stelle15] + 1;
    151. $zufallszuweisungsarray[15] = $stelle15;
    152. $stelle16 = mt_rand(1,10);
    153. while ($stellenarray[$stelle16] == 2){
    154. if ($stelle16 >= 2){
    155. $stelle16 = $stelle16 - 1;
    156. }
    157. else{
    158. $stelle16 = $stelle16 + 1;
    159. }
    160. }
    161. $stellenarray[$stelle16] = $stellenarray[$stelle16] + 1;
    162. $zufallszuweisungsarray[16] = $stelle16;
    163. $stelle17 = mt_rand(1,10);
    164. while ($stellenarray[$stelle17] == 2){
    165. if ($stelle17 >= 2){
    166. $stelle17 = $stelle17 - 1;
    167. }
    168. else{
    169. $stelle17 = $stelle17 + 1;
    170. }
    171. }
    172. $stellenarray[$stelle17] = $stellenarray[$stelle17] + 1;
    173. $zufallszuweisungsarray[17] = $stelle17;
    174. $stelle18 = mt_rand(1,10);
    175. while ($stellenarray[$stelle18] == 2){
    176. if ($stelle18 >= 2){
    177. $stelle18 = $stelle18 - 1;
    178. }
    179. else{
    180. $stelle18 = $stelle18 + 1;
    181. }
    182. }
    183. $stellenarray[$stelle18] = $stellenarray[$stelle18] + 1;
    184. $zufallszuweisungsarray[18] = $stelle18;
    185. $stelle19 = mt_rand(1,10);
    186. while ($stellenarray[$stelle19] == 2){
    187. if ($stelle19 >= 2){
    188. $stelle19 = $stelle19 - 1;
    189. }
    190. else{
    191. $stelle19 = $stelle19 + 1;
    192. }
    193. }
    194. $stellenarray[$stelle19] = $stellenarray[$stelle19] + 1;
    195. $zufallszuweisungsarray[19] = $stelle19;
    196. $stelle20 = mt_rand(1,10);
    197. while ($stellenarray[$stelle20] == 2){
    198. if ($stelle20 >= 2){
    199. $stelle20 = $stelle20 - 1;
    200. }
    201. else{
    202. $stelle20 = $stelle20 + 1;
    203. }
    204. }
    205. $stellenarray[$stelle20] = $stellenarray[$stelle20] + 1;
    206. $zufallszuweisungsarray[20] = $stelle20;
    207. return $zufallszuweisungsarray;
    208. }
    209. ?>
    Alles anzeigen

    der Code ist zwar sehr lang, wiederholt sich aber ständig

    Ich wäre euch sehr sehr dankbar, wenn mir jemand von euch den möglichen fehler zeigen könnte

    Schneidross


    Schneidross vom 23.12.2005 schrieb:

    Also...es war ne lange Nacht, aber ich hab meinen Fehler gefunden.

    Da es sich bei dem Programm um meine Facharbeit handelt, denke ich, dass ich mich noch öfter in nächster Zeit melden werde :)

    Ich möchte mich auf jeden Fall bei allen bedanken, die sich die Mühe gemacht haben, sich mit meinem Programm auseinander zu setzen...

    so long
    Schneidross

    @ Mod --> kann geclosed werden!