Random

Tråden skapades och har fått 6 svar. Det senaste inlägget skrevs .
1

Jag undrar hur man skapar en variable med ett slumpat värde(cocoa)?!!

Jag har gjort så här:

Citat:

kod:<pre style="font-size:x-small; font-family: monospace;">int rn;
rn = random();</pre>

Men jag får ett otroligt högt tal.
jag testade då att skriva:

Citat:

kod:<pre style="font-size:x-small; font-family: monospace;">rm = random(50); /* men det fungerade inte*/

rm = random(1, 50); /* fungerade inte*/</pre>

hur ska jag göra?
(jag kör i Projcet Builder)

[ 19. Januari 2003, 21:13: Meddelandet ändrat av: Simon Edwardsson ]

skriv "man random" (utan fnuttar) i ett terminalfönster.

Fast du vill ha drand48 eller liknande (man drand48).

int x = (int)(50.0*drand48()+0.5)

/Per

PS. Inget av detta har med Cocoa att göra, det är ren C-kod. Cocoa är ett (stort) klassbibliotek som du kan använda med Obj-C. Vanlig C går utmärkt att mixa med Obj-C.

[ 20. Januari 2003, 10:03: Meddelandet ändrat av: Per Persson ]

Okej, nu är det så at jag är ganska ny för c.

Jag testade att skriva in som du skrev i "Random.m" men det stod då ett felmedelande "Undefined symbols:_drand48".
Så jag testade att skappa ett nytt dokument vid namn rand.c och skriva in

Citat:

kod:<pre style="font-size:x-small; font-family: monospace;">
int rn(at)
{
int at;
at=0;
at = (int)(50.0*drand48()+0,5);
return(at);
}</pre>

och från "random.m" länka till dokumentet:

Citat:

kod:<pre style="font-size:x-small; font-family: monospace;">rn(at);</pre>

men fick samma felmedelande, vad har jag gjort för fel?

Du måste inkludera headerfilen stdlib.h:
#include <stdlib.h>

I man-filen står vilken header som definierar funktionerna:

NAME
drand48, erand48, lrand48, nrand48, mrand48, jrand48, srand48, seed48,
lcong48 - pseudo random number generators and initialization routines
LIBRARY
Standard C Library (libc, -lc)
SYNOPSIS
#include <stdlib.h>
[snip to end]

Observera att varje gång du kör ditt program kommer du att få _samma_ sekvens av slumptal om du inte anropar srand48() först. Se nedan:

Citat:

kod:<pre style="font-size:x-small; font-family: monospace;">
#include <stdlib.h>
#include <time.h>

int main(void)
{
int i;
srand48((long)time(NULL));
for (i=0;i<20;i++)
printf("Random int: %d
", (int)(50.0*drand48()+0.5));
return 0;
}</pre>

Se "man 3 time" för mer info.

okey det ska jag testa.

Fast det gick lika bra med

Citat:

kod:<pre style="font-size:x-small; font-family: monospace;">x =rand() % 100</pre>

Ok nu har ett nytt problem dykt upp för mig.

jag har en Outlet till ett "message text" och en action till en button(ja jag vet jag blandar mycket eng och sv). jag vill att när man klickar på knappen så ska det stå t ex. "start" i text fältet.

Jag gjorde så här:(test.m)

Citat:

kod:<pre style="font-size:x-small; font-family: monospace;">#import "test.h"

@implementation test

- (IBAction)knapp:(id)sender
{
char a[10]= "Start";
[text setStringValue:a];
}

@end</pre>

Men när jag kör koden stängs programet ner.
Och sedan vill jag att det ska hända varje gång jag startar programmet(inte att programet stängs ner utan att det ska stå t ex. "välkommen").

Om du kollar dokumentationen för setStringValue: ser du att den tar ett objekt av klassen NSString som parameter, du skickar en char* (pekare till en char) istället. När textView:n i sin tur skickar ett meddelande till vad den tror är ett NSString-objekt tar det hus i helvete. Du fick en varning från kompilatorn, eller hur?

Prova med:

Citat:

kod:<pre style="font-size:x-small; font-family: monospace;">
- (IBAction)knapp:(id)sender
{
NSString *a = @"Start";
[text setStringValue:a];
// [text setStringValue:@"Hejsan"]; är också OK
}
</pre>

Det fungerar , tack så mycket.

Nu ändrade jag om meassage text till ett fält där man kan skriva in text(kommer inte ihåg vad det heter?). Men när jag länkar om allt (outlesen) och ska test köra programet fungerar det inte. Jag har "test" som ett NSOBJECT ska jag ändra det till någontin annat.

Och sedan har jag en int r; r ska få ett slumpmässigt tal men bara än gång. Och jag ska kunna komma åt talet flera gånger. Jag ska också kunna gör så att r slumps igen.

Tack på förhand

[ 20. Januari 2003, 21:11: Meddelandet ändrat av: Simon Edwardsson ]

1
Bevaka tråden