Hiekkalaatikko > Leikkikoulu

Tietokonehuone

<< < (5/6) > >>

Hippi:
 
Työkaverini lähetyi tänään s-postilla ja kysyi minulta, kun tiesi minut vanhaksi koodariksi, pystyykö ohjelmaan tekemään aitoa satunnaisvalintaa.

Hänen ongelmansa liittyi musiikin kuunteluun. Hän on tallentanut noin 700 biisin valikoiman ja haluaa pitkällä automatkalla kuunnella sitä satunnaisessa järjestyksessä. Soitin toistaa kuitenkin vain noin 30 biisin luuppia ja kun kysyin tarkemmin, niin tosiaan se satunnaishaku onnistuu valitsemaan soitettavaksi suunnilleen samat "satunnaiset" biisit ja samassa järjestyksessä.

Itse olen huomannut Spotifyn artistiradion toimivan hiukan samalla tavalla, joskin satunnaistoistoon ilmeisesti on jollain tavoin painotettu hittibiisejä, jotka tuntuvat osuvan valintaan turhankin usein. Sanomattakin lienee selvää, että en käytä satunnaistoistoa, koska se on huono.

 
Oikeastaan tuollaisessa musiikin toistossa aito satunnaisvalinta ei ehkä olisikaan kovin tarkoituksenmukainen, koska esim. tuosta 700 biisin valikoimasta jäisi osa kuulematta kovin pitkäksi aikaa. Oma ideani olisi sellainen, että satunnaisvalinnalla valitaan seuraava soitettava ja soitetut biisit eivät olisi uudelleen valittavissa, kunnes kaikki on kertaalleen valittu. Makuasia sitten, että pitäisikö soittotilanne tallettaa muistiin seuraavaa kuuntelukertaa varten vai olisiko jokaisen kuuntelukerran alussa kaikki biisit valittavissa. Jokainen kuuntelukerta kuitenkin alkaisi aidolla satunnaisella valinnalla.

Mutta, nyt sitten kysymys: Miten tuollaisen soittolistan satunnaisvalinta voidaan koodata? Ei ole tullut koskaan työelämässä tarvetta tuollaista pohtia ja nyt asia jäi vaivaamaan  :)

MrKAT:

--- Lainaus käyttäjältä: Hippi - To 18.10.2018, 21:43:27 ---Oikeastaan tuollaisessa musiikin toistossa aito satunnaisvalinta ei ehkä olisikaan kovin tarkoituksenmukainen, koska esim. tuosta 700 biisin valikoimasta jäisi osa kuulematta kovin pitkäksi aikaa. Oma ideani olisi sellainen, että satunnaisvalinnalla valitaan seuraava soitettava ja soitetut biisit eivät olisi uudelleen valittavissa, kunnes kaikki on kertaalleen valittu.
...
Mutta, nyt sitten kysymys: Miten tuollaisen soittolistan satunnaisvalinta voidaan koodata? Ei ole tullut koskaan työelämässä tarvetta tuollaista pohtia ja nyt asia jäi vaivaamaan  :)

--- Lainaus päättyy ---
Esim. simppelisti:
1.  700:n alkion taulukko A: A[1],A[2],...,A[700] jossa aluksi A[1]=1, A[2]=2,...A[700]=700.
2. Sitten tehdään vaihtoali-ohjelma joka switchaa eli vaihtaa kahden arvoa.
  2a.   olkoon x ja y kok.lukuja.
  2b   Arvotaan x=RND(1,700) y=RND(1,700)  (Esim. x=35, y=411)
  2c  Vaihdetaan näiden indekxien osoittaman taulukun A arvot keskenään:
        apu=A[ x ], A[X]=A[Y], A[Y]=apu.  (Esim. näin saadaan -> A[35]=411 ja A[411]=35).
3. Toistetaan askel 2 vaikkapa 10 000 kertaa. (Nykyprosessoreilla tämä ei kestä kauan.)
    Näin taulukon A arvot eli "kappaleet" on ihan satunnaisesti sekaisin.
4. Sitten soitetaan kappaleet järjestyksessä taulukon mukaan ensin A[1], seuraavaksi A[2].... kunnes viimeinenkin A[700] on soitettu.
5. Loppu tai jos halutaan sekoittaa ja aloittaa uudelleen mennään kohtaan 1.

Patu:

--- Lainaus käyttäjältä: Hippi - To 18.10.2018, 21:43:27 ---
Työkaverini lähetyi tänään s-postilla ja kysyi minulta, kun tiesi minut vanhaksi koodariksi, pystyykö ohjelmaan tekemään aitoa satunnaisvalintaa.

--- Lainaus päättyy ---

Mielestäni aitoa satunnaisjoukkoa ei voi koodata. Käytännössä satunnaisuuden vaatimuksen täyttävän joukon pystyy koodaamaan.
BTW, mielestäni satunnaisuutta ei voi edes määritellä. Voidaan määritellä mitä se ei ole: Satunnaista tapahtumaa ei voi ennustaa.
Esim. onko lukujono 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280 34825 34211 70679 satunnaisia lukuja?
Satunnaisuus katoaa kun paljastuu, että kyseessä on pätkä Piin desimaaleja. Silloin voidaan seuraavatkin luvut laskea.

MrKAT:
Hippi työkavereineen tarkoitti aidolla varmaankin sitä käytännöllisyyttä eli suhteellisen aidolta tuntuvaa satunnaisuutta, että he itse eivät osaa arvata mikä seuraavaksi soi. Nyt he vielä osaavat arvata. "Voih sama oli jo äskettäin..tympii.."

Muuten, algoritmissani x=RND(1,700):n voinee korvata x=1, sitten x=2,x=3,...,x=700. Jolloin riittää vain 700 sykliä 10 000:n sijasta.

Minua ketuttaa radion soittolistat. Minulla on pieni maailmanradio jolla voin käydä ULA-asemamme läpi, vähän joka 2. tai 3. aseman kohdalla voin todeta "äääh tässäkin tuttu jauhettu kappale". Ottaen huomioon kapean genreni (klassinen+trance) harrastustaustani ja erittäin heikko tietäväisyys rockista + harvoin radiosta musaa kuuntelen ym, tämä on paha merkki.

Patu:
Tämä menee sivuun...tulkitsin tai ajattelin että haetaan soittolistaa joka ei olisi ajan hitti, joka kanavalta varmasti kohta kuuluva. Satunnaisesti muutakin esittävä.
Tietysti [satunnaiskerroin]*(kappalevalikoima) jo jossain mielessä valitsee soitettavat.

Kommentini satunnaisuudesta oli pahan taipumukseni tuoteta.

Navigaatio

[0] Viestien etusivu

[#] Seuraava sivu

[*] Edellinen sivu

Siirry pois tekstitilasta