Kezdőoldal » Számítástechnika » Programozás » A véletlenszerűség lehetséges?

A véletlenszerűség lehetséges?

Figyelt kérdés

Úgy értem, hogy mondjuk Zenelejátszóban (Mobil, MP4 stb)

van olyan lehetőség hogy Shuffle.

az a véletlen szerű lejátszás.

mi szerint rakja sorrendbe a számokat?

biztos nem lehet véletlen.

valamilyen algoritmusnak kell lennie.

válaszokat előre is köszi :)


2011. márc. 29. 23:09
 1/6 anonim válasza:
Ez egy bonyolult képletnek az eredménye, amibe jobbára belerakják az aktuális időpontot (mert ugye az mindig változik). De sajnos ez egy elég hibásan működő dolog a gyakorlatban, ennek sok különböző oka van. Amúgy nekem volt olyan lejátszóm, amelyik nemcsak véletlenszerűen keverte a shuffle-nél a számokat, hanem valamilyen képlet szerint prioritási sorrendbe tette annak megfelelően, hogy mennyit hallgattam, vagy csíptem. De az is volt, hogy hangulatfüggő, mint sok minden, ha a Random-ról van szó :)
2011. márc. 29. 23:15
Hasznos számodra ez a válasz?
 2/6 anonim ***** válasza:

Kongruencia generátorral csinálják. Egy kezdőértéket kap az algoritmus, ennek az értéknek általában az aktuális időhöz van köze, hogy változzon, aztán az algoritmussal lehet generálgatni.

És valóban nem véletlen, egy idő után ismétlődik a sorozat.

2011. márc. 29. 23:18
Hasznos számodra ez a válasz?
 3/6 anonim ***** válasza:
vagy az aktuális időt vagy egy random szám generátort használ, de a jegyzi mi volt már, és 53 számot pl nem ismétléssel fog lejátszani, az 53 lesz, kizárja a lejátszott tételeket. Ez egy bonyolult képlet
2011. márc. 29. 23:20
Hasznos számodra ez a válasz?
 4/6 anonim ***** válasza:
Nem olyan bonyolult az, nagyon is egyszerű.
2011. márc. 29. 23:22
Hasznos számodra ez a válasz?
 5/6 anonim ***** válasza:

A mai randomgenerátorok elég jók szoktak lenni, meglehetősen egyenletes eloszlással és nagyon hosszú sorozatokkal dolgoznak, azaz milliós nagyságrendű számkérés után kezd el ismétlődni. A valódi véletlenek sokkal kevésbé szabályosak.

Tehát valamilyen algoritmus van mögötte. Itt van válasz és link is:

http://www.gyakorikerdesek.hu/tudomanyok__alkalmazott-tudoma..

2011. márc. 30. 11:06
Hasznos számodra ez a válasz?
 6/6 anonim ***** válasza:

private final static long multiplier = 0x5DEECE66DL;

private final static long addend = 0xBL;

private final static long mask = (1L << 48) - 1;


public Random() { this(++seedUniquifier + System.nanoTime()); }

private static volatile long seedUniquifier = 8682522807148012L;


public Random(long seed) {

this.seed = new AtomicLong(0L);

setSeed(seed);

}


protected int next(int bits) {

long oldseed, nextseed;

AtomicLong seed = this.seed;

do {

oldseed = seed.get();

nextseed = (oldseed * multiplier + addend) & mask;

} while (!seed.compareAndSet(oldseed, nextseed));

return (int)(nextseed >>> (48 - bits));

}


Ennyi az egész. Forrás a java 1.6 Random.java

2011. márc. 30. 16:09
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!