Anonymní profil peter – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil peter – Programujte.comAnonymní profil peter – Programujte.com

 

Příspěvky odeslané z IP adresy 2001:718:2601:26c:598:3b6...–

peter
Pascal › Nalezení největšího znaku v…
29. 3. 2016   #209498

Mozna by bylo casove rychlejsi porovnat, zda je znak>max a az pak vyhodnocovat, zda je to pismenko.
Nebo dat jako vychozi max='a' a pak porovnat znak>max and znak<'z'. Bude tam o jedno if mene.

peter
Pascal › Promíchání pořadí pole
29. 3. 2016   #209494

Zkus tam pak tohle. Tez to neudela vyvazene promichani, ale aspon se ty cisla meni.

/*
for (b=0; b<n; b++)
	{
	a = rnd(n-b);
	tmp = pozice[a];
	pozice[a] = pozice[b];
	pozice[b] = tmp;
	}
*/
pozice = pozice.sort(function(){return 0.6 - Math.random();});
peter
Pascal › Promíchání pořadí pole
29. 3. 2016   #209493

No, kdyz myslis... Staci jednoduchy test souctu cisel v danem intervalu. Melo by vyjit vsude stejne cislo, pokud je to dobre rovnomerne promichane i po 100x zmacknuti F5. Jaka nahodicka, ze zrovna od kraju je soucet nejvetsi a klesa do stredu. Cim by to tak mohlo byt? :)

<script>
function rnd(n) {return Math.floor(Math.random()*n);}

function mytest(pozice)
{
var m,n,a,arr, i,j, str;
n = 1000;
a = 10;
m = Math.floor(n/a);
arr = [];
str = '';
for (j=0; j<a; j++)
	{
	arr[j] = 0;
	}
for (i=0; i<n; i++)
	{
	for (j=a-1; j>=0; j--)
		{
		if (i>m*j) {arr[j] += pozice[i]; break;}
		}
	}
str += '<hr>';
str += arr.join(' | ');
return str;
}

var i, a, b, n, tmp, pozice;
str = '';
pozice = [];
n = 1000;
for (i=0; i<n; i++)
	{
	pozice[i] = i;
//	pozice[a] = rnd(n);
	}
str = pozice.join(', ') + str;
str = '<hr>' + str;

for (b=0; b<n; b++)
	{
	a = rnd(n-b);
	tmp = pozice[a];
	pozice[a] = pozice[b];
	pozice[b] = tmp;
	}

str = pozice.join(', ') + str;
str = '<hr>' + str;

str = mytest(pozice) + str;

document.write(str);
</script>
peter
Pascal › Promíchání pořadí pole
29. 3. 2016   #209489

A v cem je problem? Nevis, jak se micha?

(Dale, to neni to pascal kod, ale ten snadno najdes googlem)

- Udelas cyklus, treba, do 250, nahodne vyberes dve cisla, prohodis.

cyklus (i<250)
{
a = random(17)
b = random(17)
tmp = pozice[a]
pozice[a] = pozice[b]
pozice[b] = tmp
}

- Nebo. Udelas nove pole a do nej budes skladat nahodna cisla, ktera v tom poli jeste nejsou. Coz ale muze bezet do nekonecna.

pole = [ ]
cyklus (i<17)
{
a = random(17)
cyklus (i<17) je a v poli? ano {nic}, ne {pridej do pole; i++}
}

- A nebo, treba, dnes velice moderni, nahodne serazeni, pokud algoritmus provadi konecny pocet cyklu 

function sortfunc (a,b) {return random()>random() ? a : b;}
array.sort(sortfunc);

Cili, udelas funkci, ktera rozhodne, ktere ze dvou nahodnych cisel je vetsi a podle toho se prehodi radky tabulky (pole). A protoze algoritmus serazeni obvykle pouziva konecny pocet kroku, tak to nebude delat do nekonecna.

- A nebo udelas pole, kde das jako prvni cislo 0 az 17 a jako druhe cislo nahodne cislo. Seradis to podle druheho cisla
 

pole = []
pole[] = [0, random()]; // [0, 0.754821]
pole[] = [1, random()]; // [1, 0.257211]
pole[] = [2, random()]; ... cyklem
function sortfunc (a,b) {return a[1]>b[1] ? a : b;}
pole.sort(sortfunc);
alert(pole[0][0])
alert(pole[1][0])
alert(pole[2][0])
peter
JavaScript, AJAX, jQuery › Odpočet v JS se zobrazením č…
29. 3. 2016   #209488

http://programujte.com/forum/vlakno/30814-php-funkcia-vykonana-az-za-urcity-cas/

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý