Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

BASH, random testiranje više uslova, izlaz na prvom uspešnom.

[es] :: Skript jezici :: BASH, random testiranje više uslova, izlaz na prvom uspešnom.

[ Pregleda: 59080 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

pisac

Član broj: 13046
Poruke: 4578



+3341 Profil

icon BASH, random testiranje više uslova, izlaz na prvom uspešnom.21.06.2016. u 02:07 - pre 94 meseci
Imam nekoliko uslova koje treba da testiram i pri prvom uspešnom preduzmem radnje a ostali se zanemariju:

Code:
if a; then trt
elif b; then prd
elif c; then kak
else jbg


Medjutim, to treba da uradim random redosledom, kako ne bi uvek isti uslov 'a' bio prvi u testiranju.

E, nemam ideju kako to da uradim a da bude kompaktno i elegantno.
 
Odgovor na temu

srbaja
nekada kblo 45

Član broj: 4671
Poruke: 275



+28 Profil

icon Re: BASH, random testiranje više uslova, izlaz na prvom uspešnom.21.06.2016. u 09:17 - pre 94 meseci
Da li 'jbg' treba uvek da bude na kraju? Da li 'trt' uvek sledi posle 'if a' ili se randomizuje samo uslovi a akcije su uvek istim redosledom?
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+710 Profil

icon Re: BASH, random testiranje više uslova, izlaz na prvom uspešnom.21.06.2016. u 09:59 - pre 94 meseci
Code:
#!/bin/bash
( $(exit $(( (RANDOM % 4) ))) && echo 'foo' ) || ( $(exit $(( (RANDOM % 4) ))) && echo 'bar' ) || ( $(exit $(( (RANDOM % 4) ))) && echo 'baz' ) || echo 'fee'


nek proveri neko ko se bavi shell scriptingom.

A pre toga pročitaj ovo: http://mywiki.wooledge.org/XyProblem i reci koji problem želiš da rešiš, a ne kako misliš da ga rešiš.

[Ovu poruku je menjao jablan dana 21.06.2016. u 11:12 GMT+1]
 
Odgovor na temu

pisac

Član broj: 13046
Poruke: 4578



+3341 Profil

icon Re: BASH, random testiranje više uslova, izlaz na prvom uspešnom.21.06.2016. u 13:56 - pre 94 meseci
Nije ista logika, kod tebe je svaka provera uslova random a meni treba samo random redosled a ne random provera.

Drugim rečima kod tebe može da se desi da se 'jbg' dobije i ako su sva tri uslova ispunjena, ako tako random odluči

'jbg' je uvek na kraju, 'trt' je uvek akcija za 'a', 'prd' je uvek akcija za 'b', a 'kak' je uvek za 'c', i svi uslovi moraju da se provere pre nego što se uradi 'jbg' jer je 'jbg' jako loša stvar

Problem je lepo opisan, još samo da nađem lepo rešenje .

Problem je u stvari prost, imam 3 voip tranka i preko nekog od njih treba da prosledim poziv, ako ne radi neki idem na sledeći, i tako do 'jbg' odustajanja. Međutim ne želim da pozivi uvek idu preko 'a' tranka, već da se sve svaki put proverava random redosledom.

 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+710 Profil

icon Re: BASH, random testiranje više uslova, izlaz na prvom uspešnom.21.06.2016. u 14:08 - pre 94 meseci
Mislim da pred bash postavljaš malo previsoke zahteve. Tj, i kad budeš uspeo da uradiš to što hoćeš, taj kod neće moći niko živ posle toga da održava. Predlažem ti da to što ti treba napišeš u nekom poštenom skripting jeziku, dakle perl, python ili ruby, u kojima je to što hoćeš trivijalno za napisati. Ako se odlučiš za ruby, mogu da ti pomognem.
 
Odgovor na temu

pisac

Član broj: 13046
Poruke: 4578



+3341 Profil

icon Re: BASH, random testiranje više uslova, izlaz na prvom uspešnom.21.06.2016. u 14:31 - pre 94 meseci
Hajde ako je u pajtonu trivijalno, ko zna primer za pajton? Ne bih zalazio u rubi i perl.
Može čak i za PHP. Ja ne vidim elegantno rešenje nigde, a zanima me baš nešto elegantno.

 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+710 Profil

icon Re: BASH, random testiranje više uslova, izlaz na prvom uspešnom.21.06.2016. u 16:20 - pre 94 meseci
Verovatno može kraće, ali ideja je:

Code:

import random

arr = [
        ( lambda: random.random() > 0.5,
            'foo'
            ),
        ( lambda: random.random() > 0.5,
            'bar'
            ),
        ( lambda: random.random() > 0.5,
            'baz'
            )
        ]

random.shuffle(arr)

for uslov, akcija in arr:
    if uslov():
        print(akcija)
        break


dosta zavisi u kom su ti obliku uslovi i akcije koje imaš, ali je ideja ta da imaš niz nečega (VOIP trankova npr), i svaki put ga promešaš pre nego što kreneš da iteriraš.

[Ovu poruku je menjao jablan dana 21.06.2016. u 17:34 GMT+1]
 
Odgovor na temu

Aleksandar Đokić

Član broj: 13478
Poruke: 4793
87.116.191.*



+638 Profil

icon Re: BASH, random testiranje više uslova, izlaz na prvom uspešnom.21.06.2016. u 22:00 - pre 94 meseci
Ti bi da napravis load-balancing na tezi nacin, cemu to? Mislis da ce to raditi pouzdano?
 
Odgovor na temu

pisac

Član broj: 13046
Poruke: 4578



+3341 Profil

icon Re: BASH, random testiranje više uslova, izlaz na prvom uspešnom.22.06.2016. u 03:34 - pre 94 meseci
Ima i lakši način?
 
Odgovor na temu

[es] :: Skript jezici :: BASH, random testiranje više uslova, izlaz na prvom uspešnom.

[ Pregleda: 59080 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.