Avatar billede mjl Nybegynder
02. november 2003 - 13:43 Der er 17 kommentarer og
1 løsning

4 tilfældige tal ud af 16 mulige.

Hej der...

Håber jeg lige kan forklare denne :

Jeg skal bruge et script, der kan vælge 4 tilfældige og forskellige tal ud af 16 mulige...

Altså; Jeg har tallene 1-16 og skal vælge 4 tilfældige fra denne "liste" Res. kunne være 2 - 5 - 11 - 14 f.eks.

Når jeg så vælger igen, skal den vælge 4 tilfældige igen - kan man det, og hvordan?

hilsen Conrad Dinesen
Avatar billede the_ghost Nybegynder
02. november 2003 - 13:47 #1
$ran1 = random(1, 17);
$ran2 = random(1, 17);
$ran3 = random(1, 17);
$ran4 = random(1, 17);

echo "$ran1, $ran2, $ran3, $ran4";
Avatar billede the_ghost Nybegynder
02. november 2003 - 13:48 #2
fejl. det skal være rand(1,17)
Avatar billede the_ghost Nybegynder
02. november 2003 - 13:49 #3
nu er jeg vand til Java, hvor 17 ikke er med, men det kan jeg se at den er her, så det skal være rand(1,16);

http://dk.php.net/manual/en/function.rand.php
Avatar billede mjl Nybegynder
02. november 2003 - 13:51 #4
Ser godt ud, bortset fra, at man godt kan få samme tal med 2 gange - det skal være 4 helt forskellige tal...
Avatar billede mjl Nybegynder
02. november 2003 - 13:52 #5
Ikke f.eks. 1 - 10 - 10 - 8
Avatar billede mjl Nybegynder
02. november 2003 - 13:57 #6
Kan du hjælpe med dette?
Avatar billede mjl Nybegynder
02. november 2003 - 14:14 #7
Flere points?
Avatar billede mjl Nybegynder
02. november 2003 - 14:17 #8
Never mind - fandt en løsning!

Hr. spøgelse; læg et svar - så får du points!
Avatar billede the_ghost Nybegynder
02. november 2003 - 14:28 #9
.svar
Avatar billede the_ghost Nybegynder
02. november 2003 - 14:28 #10
Hvad var løsningen så???
Avatar billede the_ghost Nybegynder
02. november 2003 - 14:33 #11
.svar igen
Avatar billede mjl Nybegynder
02. november 2003 - 14:44 #12
Dette giver hele tiden 4 forskellige - kan jo laves lidt anderledes, men det du'r!!! ;O)

<?
$ran1 = rand(1,16);
$ran2 = rand(1,16);
$ran3 = rand(1,16);
$ran4 = rand(1,16);

if ($ran1 == $ran2 OR $ran1 == $ran3 OR $ran1 == $ran4) {
$ran1 = $ran1+1;
}
if ($ran2 == $ran1 OR $ran2 == $ran3 OR $ran2 == $ran4) {
$ran2 = $ran2+1;
}
if ($ran3 == $ran2 OR $ran3 == $ran1 OR $ran3 == $ran4) {
$ran3 = $ran3+1;
}
if ($ran4 == $ran2 OR $ran4 == $ran1 OR $ran4 == $ran3) {
$ran4 = $ran4+1;
}

if ($ran1 > '16') {
$ran1 = $ran1-3;
}
if ($ran2 > '16') {
$ran2 = $ran2-3;
}
if ($ran3 > '16') {
$ran3= $ran3-3;
}
if ($ran4 > '16') {
$ran4 = $ran4-3;
}

if ($ran1 == $ran2 OR $ran1 == $ran3 OR $ran1 == $ran4) {
$ran1 = $ran1+1;
}
if ($ran2 == $ran1 OR $ran2 == $ran3 OR $ran2 == $ran4) {
$ran2 = $ran2+1;
}
if ($ran3 == $ran2 OR $ran3 == $ran1 OR $ran3 == $ran4) {
$ran3 = $ran3+1;
}
if ($ran4 == $ran2 OR $ran4 == $ran1 OR $ran4 == $ran3) {
$ran4 = $ran4+1;
}

echo "$ran1, $ran2, $ran3, $ran4";
?>
Avatar billede mjl Nybegynder
02. november 2003 - 14:45 #13
...og de er mindre end 17...
Avatar billede tfa_dk Nybegynder
02. november 2003 - 14:58 #14
I VBA kunne en løsning være denne:

Sub t()
    Dim Tal(1 To 4) As Integer ' Gem tal i tabel
    Dim i As Integer         
    Dim j As Integer
    Dim ok As Boolean
       
    Randomize
    For i = 1 To 4
        ok = False
        While Not ok
            Tal(i) = rand(1, 16) ' Lav et tal
            For j = 1 To i - 1  ' Undersøg om tal er brugt.
                If Tal(i) = Tal(j) Then
                    Exit For    ' Tal var brugt
                End If
            Next j
            ok = True
        Wend
    Next i
    Debug.Print Tab
   
End Sub

Function rand(lowerbound As Integer, upperbound As Integer)
   
    rand = Int((upperbound - lowerbound + 1) * Rnd + lowerbound)

End Function
Avatar billede tfa_dk Nybegynder
02. november 2003 - 15:17 #15
mjl: Prøv din rutine hvor $ran1 = 16 og $ran2 = 16 og $ran3 = 16 og $ran3 = 16 => 15, 15, 14, 16
eller 1,1,1,1 => 3,3,2,1
Avatar billede detox Nybegynder
02. november 2003 - 18:26 #16
En lidt enklere model:

<?
$tal = range(1,16);
shuffle($tal);
$r1 = array_shift($tal);
$r2 = array_shift($tal);
$r3 = array_shift($tal);
$r4 = array_shift($tal);
echo "$r1 $r2 $r3 $r4";
?>
Avatar billede tfa_dk Nybegynder
02. november 2003 - 18:52 #17
detox: Syntes du ikke du skylder os en forklaring? Ok leder lidt selv: http://dk.php.net/shuffle

Tror jeg vil lære PHP det kan mange ting.

mjl: Simple spørgsmål kan resultere i simple svar....
Avatar billede detox Nybegynder
02. november 2003 - 19:10 #18
$tal = range(1,16);// Laver et array med tallene fra 1-16
shuffle($tal);// Blander tallene
$r1 = array_shift($tal);// Flytter det første tal i array'et til $r1
$r2 = array_shift($tal);
$r3 = array_shift($tal);
$r4 = array_shift($tal);
echo "$r1 $r2 $r3 $r4";// Udskriver de 4 tilfældige tal
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester