Diskuze: popoc
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 12 zpráv z 12.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
cyklus a Math.random() * (max - min) + min;
reference:
https://developer.mozilla.org/…/Math/random
nebo spis tohle
ve foru pro sedm okruhu ((Math.floor(Math.random() * 10) % 7 ) + 1)
Tohle podle mě není úplně správně. Předpokládejme, že
Math.floor(Math.random() * 10)
vrátí číslo od 0 do 9 každé s
pravděpodobností 1 / 10. Potom pravděpodobnost, že dostaneme 0, 1 nebo 2 je
2 / 10 (pro 0 buď padne 0 nebo 7, pro 1: 1 nebo 8, pro 2: 2 nebo 9). Čísla od
3 do 6 včetně ale mají menší pravděpodobnost (1 / 10).
Math.floor((Math.random() * 7)) + 1
by mohlo zlepsit situaci
Diky za rady , ale zabudol som povedat ze sa nesmu opakovat. Mam nieco taketo ale pri kontrole ci sa prvok nachadza v poli sa to dlho porovnava pretoze sa musi vygenerovat cislo ktore tam este nie je.
var pole = new Array();
var i = 0;
function urob(){
if (i < 7) {
var random = Math.floor(Math.random()*7);
test = inArray(random,pole);
if (test==true){
}else{
pole.push(random);
console.log(random);
i++;
}
}else{
clearInterval(myVar);
console.log('koniec');
}
}
function inArray(prvok,pole){
var length = pole.length;
for(var i = 0; i < length; i++){
if(pole[i] == prvok) return true;
}
return false;
}
takze to shrnu, chces ziskat pole sedmi cisel z nichz kazde cislo je v rozsahu od 1 do 7 a je unikatni ... pak nechces vubec generovat nahodna cisla, ale poradi stanovenych cisel, takze potrebujes pool, mnozinu ze ktery budes brat cisla, to bude pole o sedmi prvcich (vsechna tvoje cisla klidne serazena, klidne rozhazena, to je asi fuk, ja budu rikat ze jsou serazeny od 1 do sedmi ... pak potrebujes druhy pole, ktery symbolizuje vyslednou mnozinu... do ni budes cisla z poolu hazet a ted k proces vyberu,
pro zjednoduseni ja budu z poolu odmazavat vzdy ten prvek, ktery jsem vybral, je to vizualne zretelnejsi
zde je kod:
var pool = [1, 2, 3, 4, 5, 6, 7]; // mnozina pro vyber
var randArr = []; // tvoje budouci pole
while (pool.length) { // dokud je v poolu co brat
var ranIn = Math.floor((Math.random() * pool.length)); // nahodny int v rozsahu indexu poolu, poslouzi jako index prave zvoleneho prvku
randArr.push(pool[ranIn]); // do vysledku ulozim vybranou hodnotu
pool[ranIn] = 0; // vybranou hodnotu oznacim jako pouzitou, vim, ze nula tam byt nemuze, tak pouziju nulu
repairArr(pool, 0); // pool musim opravit, sesunout vsechny prvky napravo od nuloveho prvku a snizit o jedna velikost pole
}
console.log("pole " + randArr); // vypis vysledku
// opravna funkce, muze vypadat i jinak, vice, ci mene, tahle odvede praci dobre, je tu prostor pro optimalizaci, ale to uz je an tobe ;-)
function repairArr(array, wrongElement) {
var move = false;
for (var e = 0; e < array.length - 1; e++) {
if (array[e] == wrongElement) {
move = true;
}
if (move) {
array[e] = array[e + 1];
}
}
array.length -= 1;
}
tady je fiddle: https://jsfiddle.net/…ll/1ee4brn3/
PS: priste pouzij tlacitko odpovedet, kdybych se neprochazel po hlavni strance,vubec bych si nevzpomnel, ze bys mohl jeste neco chtit
Pokud jsem pomohl, můžeš mi to oplatit tím, že moje finální řešení označíš jako řešení vlákna, samozřejmě po tom, co se ujistíš, že všechno šlape a už nepotřebuješ nic víc.
PS: vážně zkus klepnout na to tlačítko odpovědět, ono to dá vědět člověku, na kterého reaguješ, já bych si toho nevšiml kdybych si nedával pozor na vlákna, ve kterých píšu.
Chcel som sa este opytat ci mi nevies nejako s tymto pomoct ? mam taky problem, mam tlacitko a potrebujem aby sa po jeho zakliknuti postupne zobrazovali cisla od 1 do 7 a potom sa vypisal nejaky oznam. to mam zabezpecene tak ze volam tvoju funkciu cez setInterval (funkcia). Lenze takto sa mi vygeneruje hned cele pole, ale ja potrebujem aby isli pismena po jednom,no ked tam dam break tak za nim uz nemozem nic vypisat. A potreboval by som aby sa po znovu kliknuti znova vypisovali tie cisla no povodne pole je uz prazdne.
Uz som to spravil, tak este raz diky moc
Jasne, bylo mi jasny, ze to tak nejak dopadne. Je tu vic moznosti jak to udelat, mrkni na tenhle fiddle https://jsfiddle.net/…ll/1ee4brn3/ (je to ten samej, ale upravenej) ... pokud se nepletu je to to co hledas, setTimeout v cyklu zajisti postupne vypsani hodnot pomoci odebirani z konce... aby neslo tlacitko zmacknout znova hned za sebou (protoze to by se ti tam zacali ty cisla psat dost blaznive) pri stisknuti se nejdriv talcitko zablokuje, provede se nastaveni a pak se naplanuje jeho odblokovani az po poslednim zobrazeni, jeste muzes pridat to, ze ten div do kteryho to budes zobrazovat se na zacatku vzdycky vynuluje, to je na tobe... doufam, ze takhle je to ono.
EDIT: ted vidim, ze uz jsi to vyresil, necham to i tak tady, treba to nakonec k necemu jednou bude.
Zobrazeno 12 zpráv z 12.