Datentyp einer Zufallszahl

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Datentyp einer Zufallszahl

    Hallo Leute,
    ich hab ein Anfängerproblem:

    wenn ich folgenden Code eingebe (XCode 4.1) kommt eine Fehlermeldung mit "(...)long to int"

    NSNumber* zahl=[[NSNumber alloc]initWithInt: random() %100 +1];

    Kann es sein, dass sich random() neuerdings entschieden hat doch lieber Zahlen vom Datentyp long zu generieren?! ^^ ?(
    Welche Lösung würde es dann geben die generierte Zahl in einen integer umzuwandeln?

    Freue mich auf Antworten,
    OS Xcoder
  • Aus man random:
    SYNOPSIS
    #include <stdlib.h>

    long
    random(void);


    Ich würde also nicht sagen das random sich nicht erst seit kurzem "dazu entschlossen" hat long zurückzugeben. Um aus long einen int zu machen (auch auf die Gefahr hin dabei Präzision zu verlieren) kannst du einfach explizites typecasting nutzen:

    Quellcode

    1. NSNumber* zahl=[[NSNumber alloc]initWithInt: (int)random() %100 +1];
    20% cooler
  • macmoonshine schrieb:

    Wenn Du richtig castest, hast Du keinen Verlust:

    Quellcode

    1. NSNumber* zahl=[[NSNumber alloc] initWithInt: (int) (random() % 100) + 1];


    Wie kann ich einen Verlust haben wenn ich eh nur die Zahlen von 1-100 haben möchte :) Ich bekomme zwar eine "andere" Zahl, die ist aber ganz genauso zufällig wie die anders gecastete :)

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Mal so nebenbei: Ich glaube nicht, dass der Wertebereich von random() ein ganzzahliges Vielfaches von 100 abzüglich 1 ist. Damit ist das Ergebnis nach % 100 keine "saubere" Pseudozufallszahl mehr. Besser wäre hier eine Multiplikation. Ach, so, die dauert natürlich länger. Vor allem im Vergleich zur Erzeugung einer Instanz. ;)
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Thallius schrieb:

    macmoonshine schrieb:

    Wenn Du richtig castest, hast Du keinen Verlust:

    Quellcode

    1. NSNumber* zahl=[[NSNumber alloc] initWithInt: (int) (random() % 100) + 1];


    Wie kann ich einen Verlust haben wenn ich eh nur die Zahlen von 1-100 haben möchte :)

    Guter punkt, ich hab gar nicht genau auf die Zahl geachtet sondern einfach nur long und int im Kopf gehabt.

    Edit: Hier stand blödsinn
    20% cooler

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von JustSid ()