/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
nemmeste måde at vælge 10 unikke tal på.
Fra : Mark - Jensen -


Dato : 13-10-04 12:54



Forestil jer at I har 1000 tal. (0-999)

Der skal vælges 10 unikke tal indenfor det spektrum.

Min løsning er mindre elegant, derfor vil jeg gerne vide hvordan man
mest fordelagtigti ville gøre det.

(min løsning)

id1=rand(0,$resultater-1);


$id2=rand(0,$resultater-1);

while ($id2 == $id1) {
$id2=rand(0,$resultater-1);
}   

$id3=rand(0,$resultater-1);


while (($id3 == $id1) || ($id3 == $id2)) {
$id3=rand(0,$resultater-1);
}   


Etc, selvsagt bliver det mindre smart jo flere tal man skal bruge :o

 
 
Kristian Thy (13-10-2004)
Kommentar
Fra : Kristian Thy


Dato : 13-10-04 13:09

Mark - Jensen - uttered:
> Forestil jer at I har 1000 tal. (0-999)
>
> Der skal vælges 10 unikke tal indenfor det spektrum.

$nums = range(1,$resultater);
shuffle($nums);
$rands = array_slice($nums,0,10);

\\kristian
--
<URL:http://lpf.ai.mit.edu/Patents/knuth-to-pto.txt>
<URL:http://home.att.net/~jbcole/humor/Microsoft_patents.htm>

Mark - Jensen - (13-10-2004)
Kommentar
Fra : Mark - Jensen -


Dato : 13-10-04 13:33

On 13 Oct 2004 12:09:05 GMT, Kristian Thy <thy@it.edu> wrote:

>Mark - Jensen - uttered:
>> Forestil jer at I har 1000 tal. (0-999)
>>
>> Der skal vælges 10 unikke tal indenfor det spektrum.
>
>$nums = range(1,$resultater);
>shuffle($nums);
>$rands = array_slice($nums,0,10);
>
>\\kristian


Niice, Jeg fik et andet forslag med en for-løkke, men det her virker
klart nemmest.

Christian Joergensen (13-10-2004)
Kommentar
Fra : Christian Joergensen


Dato : 13-10-04 21:13

On Wed, 13 Oct 2004 12:09:05 +0000, Kristian Thy wrote:

>> Forestil jer at I har 1000 tal. (0-999)
>>
>> Der skal vælges 10 unikke tal indenfor det spektrum.
>
> $nums = range(1,$resultater);
> shuffle($nums);
> $rands = array_slice($nums,0,10);

Reelt set, kunne man begynde at argumentere om unoedigt resurseforbrug
- men det vil jeg undlade ;)

--
Christian Jørgensen | Use the Source, Luke!
http://www.razor.dk |


Tommy Ipsen (13-10-2004)
Kommentar
Fra : Tommy Ipsen


Dato : 13-10-04 19:08

Mark - Jensen - wrote:

> Forestil jer at I har 1000 tal. (0-999)
>
> Der skal vælges 10 unikke tal indenfor det spektrum.

for($i=0;$i<10;$i++) echo $i;

Mvh Tommy

Kristian Thy (13-10-2004)
Kommentar
Fra : Kristian Thy


Dato : 13-10-04 19:19

Tommy Ipsen uttered:
>> Forestil jer at I har 1000 tal. (0-999)
>>
>> Der skal vælges 10 unikke tal indenfor det spektrum.
>
> for($i=0;$i<10;$i++) echo $i;

Du får medaljen :)

\\kristian
--
<URL:http://lpf.ai.mit.edu/Patents/knuth-to-pto.txt>
<URL:http://home.att.net/~jbcole/humor/Microsoft_patents.htm>

Tommy Ipsen (13-10-2004)
Kommentar
Fra : Tommy Ipsen


Dato : 13-10-04 20:32

Kristian Thy wrote:
> Tommy Ipsen uttered:
>
>>>Forestil jer at I har 1000 tal. (0-999)
>>>
>>>Der skal vælges 10 unikke tal indenfor det spektrum.
>>
>>for($i=0;$i<10;$i++) echo $i;
>
> Du får medaljen :)

Forstår heller ikke, hvorfor det var nødvendigt med alt det dér
"tilfældighedsnoget"

Mvh Tommy

Thomas Lindgaard (13-10-2004)
Kommentar
Fra : Thomas Lindgaard


Dato : 13-10-04 21:37

On Wed, 13 Oct 2004 13:53:37 +0200, Mark - Jensen - wrote:

>
>
> Forestil jer at I har 1000 tal. (0-999)
>
> Der skal vælges 10 unikke tal indenfor det spektrum.

Utestet naturligvis:

<?php
$nums = array();
while ( count($nums) != 10 )
{
$rand = rand(0, $resultater - 1);
if ( !isset($nums[$rand]) ) $nums[$rand] = 1;
}
$nums = array_keys($nums);
?>

Virker nok bedst når man har et stort spektrum i forhold til det antal
man vil udvælge (giver mindre sandsynlighed for at vælge samme tal flere
gange).

Mvh.
/Thomas


Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste