Zufallszahlen

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Zufallszahlen

      Hallo zusammen,
      um das Pixelsetzen des Varitronix Displays auszuprobieren, habe ich die Werte der Pixel über RND() gesetzt.
      Dabei sind mir einige Besonderheiten der RND() Funktion aufgefallen:
      Grundsätzlich werden alle Werte generiert, solange man nur eine RND verwendet, aber

      RND(2^x)
      • ist immer absolut gleichverteilt,
      • alle Werte treten mit der gleichen Häufigkeit auf
      • erst wenn alle einmal generiert wurden, kommt der erste ein zweites Mal dran usw.
      • die Reihenfolge ist dabei konstant
      RND(gerade/ungerade)
      • sind recht gleichmäßig verteilt, max. Abweichung etwa 25%, wird aber immer wieder ausgegliche
      • Reihenfolge ändert sich dauernd
      • Primzahlen ergeben keine Verbesserung
      Dann wollte ich mal das ganze Display füllen lassen, habe also für x und y Richtung jeweils eine RND nacheinander generieren lassen.
      Dabei sah das Ergebnis dann deutlich anders – und schlechter – aus, weil für jede RND nicht immer alle Werte erzeugt werden:

      Beide RND(2^x)
      • Es werden nur noch 2^x-1 Kombinationen der größeren Zahl erzeugt.
      • Dies liegt daran, dass eine die 2erPotenz der anderen ist und die Reihenfolge der erzeugten Zufallszahlen für RND(2^x) konstant ist
      • Eine solche Kombination sollte man also auf jeden Fall vermeiden
      64x32.jpg

      Eine RND(gerade), eine RND(ungerade)
      • Für die gerade RND werden nur gerade bzw. nur ungerade Werte erzeugt, für die ungerade alle
      100x51.jpg101x50.jpg

      Beide RND(gerade)
      • Für die eine Zufallszahl werden nur gerade, für die andere nur ungerade Werte generiert

      100x50.jpg

      Beide RND(ungerade)
      • Hier werden alle Werte erzeugt
      101x51.jpg

      Damit man das besser erkennen kann, habe ich mal ein paar Bilder angehangen.
      Oben ist immer die RND für x, links die RND für y gezeigt.
      Um das Ganze herum ist noch ein Rahmen von einem Pixel damit ich erkennen kann, wo die generierten Werte wirklich aufhören.
      Schlussfolgerung ist, dass ich für eine RND definitiv keine 2er Potenzen als Max-Werte nehme.
      Und sollten es mal 2 oder mehr RNDs brauchen, dann alle mit ungeraden Max-Werten.
    • Hallo Michael,
      ich habe nicht darüber gesprochen, dass die Reihenfolge nicht zufällig ist, das ist mir schon klar.
      Außer bei der 2er-Potenz als max-Wert, da sehe ich es schon als Problem, dass alle Werte immer in der gleichen Reihenfolge erzeugt werden.

      Mir ging es hauptsächlich darum, dass bei der Verwendung von mehreren RNDs die sich gegenseitig beeinflussen.

      Das Muster ist auch nur, weil man damit die Fehler sofort identifizieren kann:

      BASCOM Source Code

      1. Range_x = 64
      2. Range_y = 32
      3. My_string = Str(range_x)
      4. Lcd_init
      5. Lcd_clear &B00_00_00_00
      6. Lcd_string 21 , 1 , My_string , 8x8
      7. My_string = " " + Str(range_y)
      8. Lcd_string 1 , 11 , My_string , 8x8
      9. Lcd_frame 20 , 10 , Range_x + 21 , Range_y + 11 , 1
      10. Do
      11. Rnd_x = Rnd(range_x)
      12. Rnd_y = Rnd(range_y)
      13. Print Rnd_x ; "-" ; Rnd_y
      14. Lcd_pset Rnd_x + 21 , Rnd_y + 11 , 1
      15. Loop
      Display All


      Beim Print kannst du dir die Werte auch ansehen:

      Source Code

      1. 3-26
      2. 21-4
      3. 55-30
      4. 41-8
      5. 43-2
      6. 61-12
      7. 31-6
      8. 17-16
      9. 19-10
      10. 37-20
      11. 7-14
      12. 57-24
      13. 59-18
      14. 13-28
      15. 47-22
      16. 33-0
      17. 35-26
      18. 53-4
      19. 23-30
      20. 9-8
      21. 11-2
      22. 29-12
      23. 63-6
      24. 49-16
      25. 51-10
      26. 5-20
      27. 39-14
      28. 25-24
      29. 27-18
      30. 45-28
      31. 15-22
      32. 1-0
      33. 3-26
      34. 21-4
      35. 55-30
      36. 41-8
      37. 43-2
      38. 61-12
      39. 31-6
      40. 17-16
      41. 19-10
      42. 37-20
      43. 7-14
      44. 57-24
      45. 59-18
      46. 13-28
      47. 47-22
      48. 33-0
      49. 35-26
      50. 53-4
      51. 23-30
      52. 9-8
      53. 11-2
      54. 29-12
      55. 63-6
      56. 49-16
      57. 51-10
      58. 5-20
      59. 39-14
      60. 25-24
      61. 27-18
      62. 45-28
      63. 15-22
      64. 1-0
      65. 3-26
      66. 21-4
      67. 55-30
      68. 41-8
      69. 43-2
      70. 61-12
      71. 31-6
      72. 17-16
      73. 19-10
      74. 37-20
      75. 7-14
      76. 57-24
      77. 59-18
      78. 13-28
      79. 47-22
      80. 33-0
      81. 35-26
      82. 53-4
      83. 23-30
      84. 9-8
      85. 11-2
      86. 29-12
      87. 63-6
      88. 49-16
      89. 51-10
      90. 5-20
      91. 39-14
      92. 25-24
      93. 27-18
      94. 45-28
      95. 15-22
      96. 1-0
      97. 3-26
      98. 21-4
      99. 55-30
      100. 41-8
      101. 43-2
      102. 61-12
      103. 31-6
      104. 17-16
      105. 19-10
      106. 37-20
      107. 7-14
      108. 57-24
      109. 59-18
      110. 13-28
      111. 47-22
      112. 33-0
      113. 35-26
      114. 53-4
      115. 23-30
      116. 9-8
      117. 11-2
      118. 29-12
      119. 63-6
      120. 49-16
      121. 51-10
      122. 5-20
      123. 39-14
      124. 25-24
      125. 27-18
      126. 45-28
      127. 15-22
      128. 1-0
      129. 3-26
      130. 21-4
      131. 55-30
      132. 41-8
      133. 43-2
      134. 61-12
      135. 31-6
      136. 17-16
      137. 19-10
      138. 37-20
      139. 7-14
      140. 57-24
      141. 59-18
      142. 13-28
      143. 47-22
      144. 33-0
      145. 35-26
      146. 53-4
      147. 23-30
      148. 9-8
      149. 11-2
      150. 29-12
      151. 63-6
      152. 49-16
      153. 51-10
      154. 5-20
      155. 39-14
      156. 25-24
      157. 27-18
      158. 45-28
      159. 15-22
      160. 1-0
      161. 3-26
      162. 21-4
      163. 55-30
      164. 41-8
      165. 43-2
      166. 61-12
      167. 31-6
      168. 17-16
      169. 19-10
      170. 37-20
      171. 7-14
      172. 57-24
      173. 59-18
      174. 13-28
      175. 47-22
      176. 33-0
      177. 35-26
      178. 53-4
      179. 23-30
      180. 9-8
      181. 11-2
      182. 29-12
      183. 63-6
      184. 49-16
      185. 51-10
      186. 5-20
      187. 39-14
      188. 25-24
      189. 27-18
      190. 45-28
      191. 15-22
      192. 1-0
      193. 3-26
      194. 21-4
      195. 55-30
      196. 41-8
      197. 43-2
      198. 61-12
      199. 31-6
      200. 17-16
      201. 19-10
      202. 37-20
      203. 7-14
      204. 57-24
      205. 59-18
      206. 13-28
      207. 47-22
      208. 33-0
      209. 35-26
      210. 53-4
      211. 23-30
      212. 9-8
      213. 11-2
      214. 29-12
      215. 63-6
      216. 49-16
      217. 51-10
      218. 5-20
      219. 39-14
      220. 25-24
      221. 27-18
      222. 45-28
      223. 15-22
      224. 1-0
      225. 3-26
      226. 21-4
      227. 55-30
      228. 41-8
      229. 43-2
      230. 61-12
      231. 31-6
      232. 17-16
      233. 19-10
      234. 37-20
      235. 7-14
      236. 57-24
      237. 59-18
      238. 13-28
      239. 47-22
      240. 33-0
      241. 35-26
      242. 53-4
      243. 23-30
      244. 9-8
      245. 11-2
      246. 29-12
      247. 63-6
      248. 49-16
      249. 51-10
      250. 5-20
      251. 39-14
      252. 25-24
      253. 27-18
      254. 45-28
      255. 15-22
      256. 1-0
      257. 3-26
      258. 21-4
      259. 55-30
      260. 41-8
      261. 43-2
      262. 61-12
      263. 31-6
      264. 17-16
      265. 19-10
      266. 37-20
      267. 7-14
      268. 57-24
      269. 59-18
      270. 13-28
      271. 47-22
      272. 33-0
      273. 35-26
      274. 53-4
      275. 23-30
      276. 9-8
      277. 11-2
      278. 29-12
      279. 63-6
      280. 49-16
      281. 51-10
      282. 5-20
      283. 39-14
      284. 25-24
      285. 27-18
      286. 45-28
      287. 15-22
      288. 1-0
      289. 3-26
      290. 21-4
      291. 55-30
      292. 41-8
      293. 43-2
      294. 61-12
      295. 31-6
      296. 17-16
      297. 19-10
      298. 37-20
      299. 7-14
      300. 57-24
      301. 59-18
      302. 13-28
      303. 47-22
      304. 33-0
      305. 35-26
      306. 53-4
      307. 23-30
      308. 9-8
      309. 11-2
      310. 29-12
      311. 63-6
      312. 49-16
      313. 51-10
      314. 5-20
      315. 39-14
      316. 25-24
      317. 27-18
      318. 45-28
      319. 15-22
      320. 1-0
      321. 3-26
      322. 21-4
      323. 55-30
      324. 41-8
      325. 43-2
      326. 61-12
      327. 31-6
      328. 17-16
      329. 19-10
      330. 37-20
      331. 7-14
      332. 57-24
      333. 59-18
      334. 13-28
      335. 47-22
      336. 33-0
      337. 35-26
      338. 53-4
      339. 23-30
      340. 9-8
      341. 11-2
      342. 29-12
      Display All
      Und so sieht die Folge aus, wenn man RND(64) verwendet:

      Source Code

      1. 15
      2. 22
      3. 1
      4. 0
      5. 3
      6. 58
      7. 21
      8. 4
      9. 55
      10. 30
      11. 41
      12. 8
      13. 43
      14. 2
      15. 61
      16. 12
      17. 31
      18. 38
      19. 17
      20. 16
      21. 19
      22. 10
      23. 37
      24. 20
      25. 7
      26. 46
      27. 57
      28. 24
      29. 59
      30. 18
      31. 13
      32. 28
      33. 47
      34. 54
      35. 33
      36. 32
      37. 35
      38. 26
      39. 53
      40. 36
      41. 23
      42. 62
      43. 9
      44. 40
      45. 11
      46. 34
      47. 29
      48. 44
      49. 63
      50. 6
      51. 49
      52. 48
      53. 51
      54. 42
      55. 5
      56. 52
      57. 39
      58. 14
      59. 25
      60. 56
      61. 27
      62. 50
      63. 45
      64. 60
      65. 15
      66. 22
      67. 1
      68. 0
      69. 3
      70. 58
      71. 21
      72. 4
      73. 55
      74. 30
      75. 41
      76. 8
      77. 43
      78. 2
      79. 61
      80. 12
      81. 31
      82. 38
      83. 17
      84. 16
      85. 19
      86. 10
      87. 37
      88. 20
      89. 7
      90. 46
      91. 57
      92. 24
      93. 59
      94. 18
      95. 13
      96. 28
      97. 47
      98. 54
      99. 33
      100. 32
      101. 35
      102. 26
      103. 53
      104. 36
      105. 23
      106. 62
      107. 9
      108. 40
      109. 11
      110. 34
      111. 29
      112. 44
      113. 63
      114. 6
      115. 49
      116. 48
      117. 51
      118. 42
      119. 5
      120. 52
      121. 39
      122. 14
      123. 25
      124. 56
      125. 27
      126. 50
      127. 45
      128. 60
      129. 15
      130. 22
      131. 1
      132. 0
      133. 3
      134. 58
      135. 21
      136. 4
      137. 55
      138. 30
      139. 41
      140. 8
      141. 43
      142. 2
      143. 61
      144. 12
      145. 31
      146. 38
      147. 17
      148. 16
      149. 19
      150. 10
      151. 37
      152. 20
      153. 7
      154. 46
      155. 57
      156. 24
      157. 59
      158. 18
      159. 13
      160. 28
      161. 47
      162. 54
      163. 33
      164. 32
      165. 35
      166. 26
      167. 53
      168. 36
      169. 23
      170. 62
      171. 9
      172. 40
      173. 11
      174. 34
      175. 29
      176. 44
      177. 63
      178. 6
      179. 49
      180. 48
      181. 51
      182. 42
      183. 5
      184. 52
      185. 39
      186. 14
      187. 25
      188. 56
      189. 27
      190. 50
      191. 45
      192. 60
      193. 15
      194. 22
      195. 1
      196. 0
      197. 3
      198. 58
      199. 21
      200. 4
      201. 55
      202. 30
      203. 41
      204. 8
      205. 43
      206. 2
      207. 61
      208. 12
      209. 31
      210. 38
      211. 17
      212. 16
      213. 19
      214. 10
      215. 37
      216. 20
      217. 7
      218. 46
      219. 57
      220. 24
      221. 59
      222. 18
      223. 13
      224. 28
      225. 47
      226. 54
      227. 33
      228. 32
      229. 35
      230. 26
      231. 53
      232. 36
      233. 23
      234. 62
      235. 9
      236. 40
      237. 11
      238. 34
      239. 29
      240. 44
      241. 63
      242. 6
      243. 49
      244. 48
      245. 51
      246. 42
      247. 5
      248. 52
      249. 39
      250. 14
      251. 25
      252. 56
      253. 27
      254. 50
      255. 45
      256. 60
      Display All
      Immer die gleiche Reihenfolge und immer erst alle 64 durch, bevor es wieder von vorne losgeht.

      The post was edited 1 time, last by Franz ().

    • Überhaupt nicht zufällig aber erheblich mehr Werte bis zur Wiederholung wäre einfach den Flash auszulesen und diese Werte zu nutzen. Startet man den Beginn mit einer Zufallszahl wird es wohl sehr lang brauchen bis es auffällt das es gar nicht zufällig ist.
      PS Wann/Wozu braucht es Zufallszahlen? Ich glaube sie noch nie benötigt zu haben?
    • Pluto25 wrote:

      Wann/Wozu braucht es Zufallszahlen?
      Och, da hatte ich schon die eine oder andere Anwendung.
      Zum Beispiel zum erzeugen individueller "Bestätigungs-PINs" war das letzte wo ich mich erinnere.
      Aber ich hatte die Funktion sicher schon öfters in Verwendung und habe mir angewöhnt diese mit dem rseed in einem IRQ und einer RTC-Sekunde auch individuell zu "mischen".