hosted by DashNet
RandomGen by Orteil (twitter | tumblr)
Make your own
forums
also : Cookie Clicker, Nested
Oops, looks like the generator isn't loading right!
Please make sure your javascript is enabled, then refresh.
This could also be caused by a problem on our side, in which case - wait a moment, then refresh!

Welcome to RandomGen : a simple tool to create random text generators, and a directory of such generators.


You may check out the existing generators above, or try making one yourself.

You might also like Nested, a universe generator I made a while ago.

RandomGen was created by Orteil, some guy who really likes random generators.

Alright, let's make some stuff!


First : a few things

What's a random generator?

A random generator is a simple application that produces random text at the click of a button. There are generators that output random names, others that write descriptions of strange imaginary monsters, but you could imagine a generator for just about anything - such as a generator that returns a random story, or a random cooking recipe!


So how do I make a generator?

Well, it's fairly easy. All generators in RandomGen are simply text files that our website converts into generators.
To make your own generator, you will have to write that text file using the syntax described below (you'll see, you can do all kinds of neat stuff). Here's what a finished generator source file looks like : http://pastebin.com/raw.php?i=cKeB4v4J. Pretty readable, huh?

You will then have to find a place online to store your text file (pastebin.com is a good one; your text files are hosted for free and, if you register, you can edit them as much as you want. Here are some other text-hosting sites).

Once you're happy with your new generator, all that remains to do is to share it with the world!


How do I use my generator once it's written?

To use a generator, take its source file's URL and append it to http://orteil.dashnet.org/randomgen/?gen=.
A generator stored at www.example.com/mygenerator.txt would be usable at http://orteil.dashnet.org/randomgen/?gen=www.example.com/mygenerator.txt.

  • Note : we seem to be having problems with pastebin.com right now. Probably a bandwidth limit being reached. Sorry!
  • If your generator is hosted on pastebin.com, you only have to refer to its identifier (the letters at the end of its url). For example, http://pastebin.com/cKeB4v4J becomes http://orteil.dashnet.org/randomgen/?gen=cKeB4v4J.
  • Note : when hosting your file on pastebin.com, make sure you're registered - or you won't be able to edit your generator later! Also make sure to set the file to never expire, and to make it either public or unlisted.
  • If you're not hosted on pastebin.com, make sure your file is a .txt file! Your generator won't work with any other file type.


General tips about writing generators

  • You can make a generator for practically anything.
  • Spend some time examining the sources of other generators, you'll probably learn a lot.
  • Test your generator. A lot.
  • Keep backups of your generator's source - you never know!
  • Adding a description, picture, and some nice formatting can really help your generator stick out.
  • Beware of spelling mistakes, they can quickly make a generator appear very unprofessional. Use spell-check!
  • This page doesn't include all the tricks and subtleties of RandomGen - again, check out the source of existing generators, and see what's happening on the RandomGen forums!


Writing source files

Quick overview

To create a random generator, you simply have to define lists of things that reference each other. For example :

	$animal
	cat
	dog
	fish

	$phrase
	My pet is a [animal].
	I am feeding my [animal].
							

This will generate sentences such as "My pet is a cat", or "I am feeding my fish".
The last list declared will be used as the base generator (in this case : $phrase).
You can change how many items are generated by adding "
&amount=10
" to the url; you can also change the base generator by adding "
&seed=element
".


Global settings

$name : My Generator

$author : Author

$description : Description of my generator

$picture : http://.../pic.png

(should be 128x128px)
$amount : 3

sets the default amount of results the generator should yield
$button : Another!

sets the text for the "Generate" button

Inclusions

$include http://url.com

This adds to your generator everything defined in the generator at the specified URL.
Inclusions should always be declared at the top of the file, before any other data.
Try to use as few inclusions as possible, as they make the loading time for your generator much longer.
You are encouraged to create "utility generators" full of lists (such as names or colors) that other people can include in their own generators to expand them easily.

Creating lists of elements

$animal

Starts a new list with the identifier "animal".
$+animal

Starts adding elements to the list with this identifier. This is good for expanding on included lists.
fish

Adds a new element named "fish" to the current list.
fish {20%}

Adds a new element to the current list, but this element will only have a 20% chance of being added to the random selection table.

Nesting elements

I own a [animal].

[animal] will be replaced by a random element from the $animal list.
I need a quick random [word|term|thing to say].

This returns one of the elements between brackets at random, without needing to create a separate list.
Can even be nested with regular lists, as such :
I am eating a [[fruit]|[vegetable]|[candy]].

This can quickly get complicated - make sure to keep track of your brackets!

Identifiers

My pet is a [animal,#pet]. I've always wanted a [#pet].

Remembers the animal by its identifier (#pet) and returns the same animal in both instances.
My [#pet]'s name is [name,#name,written]. Would you like to see [#name]?

Adding "written" will record the element as its literal representation, instead of its generator. This is necessary in some cases.

Attributes

Check this out :
	$animal
	cat {action:meows}
	dog {action:barks}
	fish {action:swims}
	
	$phrase
	I have a [animal,#pet]. My [#pet] is [#pet,as action].
							

This is a bit trickier. The syntax {attribute:value} will add custom properties to elements which can be referred to later. You could use this for things such as gender, verb tenses, alternate descriptions, and so on.
My [#pet] is [#pet,as action,or sleeping]

This defines what to fall back to ("sleeping") if the specified attribute doesn't exist for an element.

Utilities and other fun things

There are [100-10000] leaves here.

Returns a random number between two bounds.
My name is [random syllable,x2-6].

The "x2-6" will return between two and 6 of the specified element.
There is [an] [word].

[an] will be replaced by "a" or "an", depending on the next letter.
Look at all the [animal][s]!

[s] will replace the previous word to its proper plural (this is not fool-proof and can sometimes return silly results).
The book's cover reads "[book name,title]".

The "book name" will have title-like capitalization ("my cat has asthma" will be converted to "My Cat Has Asthma").
Look at my [animal]. Look At My [Animal]. LOOK AT MY [ANIMAL].

The engine will detect the proper letter case and will respectively return : "Look at my cat. Look At My Cat. LOOK AT MY CAT."
This might not always work; if you need to capitalize something like [#pet], you can write [#1,Abc].

Formatting with html

Finally, you can use some html tags to add a bit of formatting.
Tags allowed are <b>, <i>, <u>, <q>, <p>, <small>, <big>, <h1> / <h2> / <h3> and <br>.

Conclusion

Closing words

Ready to show off your new generator? Take its URL and share it with anyone you want. Send it to your family, your friends, your dog!
People on our RandomGen forums will be more than happy to try and comment on your generator. And who knows, if your generator makes enough noise, we might even end up adding it to the list!

Credits

RandomGen is an app by Orteil and Opti, 2014. All rights reserved.
We hope you have as much fun using it as we had making it!
Need to contact us? Please do so through our forums.