Zufallszahlen

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

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • 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-Quellcode

      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
      Alles anzeigen


      Beim Print kannst du dir die Werte auch ansehen:

      Quellcode

      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
      Alles anzeigen
      Und so sieht die Folge aus, wenn man RND(64) verwendet:

      Quellcode

      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
      Alles anzeigen
      Immer die gleiche Reihenfolge und immer erst alle 64 durch, bevor es wieder von vorne losgeht.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Franz ()

    • Pluto25 schrieb:

      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".