221: Random Number

Explain xkcd: It's 'cause you're dumb.
Jump to: navigation, search
Random Number
RFC 1149.5 specifies 4 as the standard IEEE-vetted random number.
Title text: RFC 1149.5 specifies 4 as the standard IEEE-vetted random number.

[edit] Explanation

The comic specifies a function (in a C-like syntax), which judging by its name should be designed to return a random number. Most functions of this form are random number generators, meaning that on subsequent calls they return different random numbers. But the programmer has instead implemented a function that just returns always the same random number; which, while it could indeed have been truly randomly chosen by rolling a die as the comment documented, is essentially worthless as it could simply be replaced by a "4" wherever it is used. In fact, most modern compilers would do this optimization automatically.

The IEEE is the organization responsible for maintaining a number of computer standards. An RFC, or Request for Comments, is a formal document put out to computing experts by IETF in the hopes of becoming a future standard. However, RFC 1149 was an April Fools' joke, defining how carrier pigeons can be used to transmit Internet packets. The RFC 1149.5 simply does not exist.

[edit] Transcript

int getRandomNumber()
{
   return 4; // chosen by fair dice roll.
             // guaranteed to be random.
}
comment.png add a comment! ⋅ Icons-mini-action refresh blue.gif refresh comments!

Discussion

The syntax looks like perfectly valid java to me.213.64.1.189 22:00, 11 March 2013 (UTC)

Looks like Java to me too. 139.216.242.254 (talk) (please sign your comments with ~~~~)

How can Java come to mind when it is pure C syntax, which predates Java by several years and is arguably better known. A feature of most languages is that they have a "C-like syntax". See, a whole page on Wikipedia - http://en.wikipedia.org/wiki/List_of_C-based_programming_languages 122.161.20.238 19:53, 22 August 2013 (UTC)
"C-like syntax" is the best explain, this covers all. Even when I disagree that it's better known than Java these days.--Dgbrt (talk) 21:04, 22 August 2013 (UTC)
Just to be particularly pedantic, the double slash for the comment (which is generally utilised in object oriented C-style languages) should be avoided in C to retain backwards compatibility with C89, although it's a valid construct in C99. I'd offer, too, that the lack of library inclusion suggests this isn't necessarily Java, though it's been a couple years since I've had the opportunity to code in it. Thokling (talk) 15:35, 20 September 2013 (UTC)

As a proof of good joke, RFC 1149 was successfully implemented several times. -- Hkmaly (talk) 08:55, 11 May 2013 (UTC)

Actually, a poor “random” function like “return 4;” would be quickly determined by statistical test tools (Diehard, Dieharder, etc.) to generate very poor random number. Samiam (talk) 19:55, 28 October 2013 (UTC)

The number is random, I'm sure Randall really did this "fair dice roll". And even the name of the function is correct, it just returns a random number. A programmer would expect a random number generator, but Randall can't roll the dice all the time.--Dgbrt (talk) 21:37, 28 October 2013 (UTC)
<<sound of crickets chirping>> 108.162.219.58 02:24, 6 February 2014 (UTC)
Playstation 3 jailbreak reference?
Isn't this a reference to Sony Playstation 3's random number generator function that allowed to discover the private key to 3.55 firmware? 141.101.64.23 (talk) (please sign your comments with ~~~~)
Personal tools
Namespaces

Variants
Actions
Navigation
Tools

It seems you are using noscript, which is stopping our project wonderful ads from working. Explain xkcd uses ads to pay for bandwidth, and we manually approve all our advertisers, and our ads are restricted to unobtrusive images and slow animated GIFs. If you found this site helpful, please consider whitelisting us.

Want to advertise with us, or donate to us with Paypal or Bitcoin?