Introduction

The game Minecraft has a 1 in 10000 chance of showing "Minceraft" instead of "Minecraft" on the title screen.

Your challenge is to code a function or program that takes no input, and on average 1 of 10000 times, returns "Minceraft" and the rest of the time returns "Minecraft".

Scoring

This is , shortest wins!

• All solutions so far will not satisfy the challenge as stated (they might, but highly unlikely). It has in fact been misstated - it is correct in the introduction, but the challenge asks for something different Apr 25, 2021 at 11:10
• The introduction talks about a 1 in 10000 chance, whereas the challenge asks for a function/program that returns "Minceraft" EXACTLY once and "Minecraft" the rest of the time. This would be achieved with a loop. The solutions below are doing what is stated in the introduction, which is different Apr 25, 2021 at 11:15
• Suggest edit: "on average 1 out of 10000 times", assuming this is the intention, to satisfy nitpickers... Apr 25, 2021 at 11:16
• how precisly does it have to be 1/10000 ? multiple answers have 1/10001 for example Apr 26, 2021 at 14:01
• When I first saw the title I thought the goal is to implement the entire game of minecraft in shortest possible amount of code. Sep 22, 2021 at 17:39

Minecraft, 358293277 276 bytes

Implementing Minceraft in Minecraft

Should be run as a set of commands in game. Should be run on a fresh superflat (redstone ready) world. Byte count is the amount of characters you need to type, including newlines.

/scoreboard objectives add s dummy
/summon bat
/execute as @e[type=bat] store result score o s run data get entity @s UUID[1]
/scoreboard players set c s 2147054151
/execute if score o s < c s run tellraw @s "Minecraft"
/execute if score o s >= c s run tellraw @s "Minceraft"


The UUID of an entity is (mostly) randomly generated and stored as four signed 32 bit integers. One of the integers is compared with 2147054151 which is one ten thousandth of the way between 2^31 and -2^31.

Previous solution because it was so high effort and I'm not deleting it:

Minecraft, 293 bytes

/scoreboard objectives add s dummy
/summon horse
/execute as @e[type=horse] store result score o s run data get entity @s Attributes[1].Base 100000
/scoreboard players set c s 11883
/execute if score o s >= c s run tellraw @s "Minecraft"
/execute if score o s < c s run tellraw @s "Minceraft"


How does it work?

In Minecraft, there are only a limited amount of sources of reliable randomness usable in commands. In Minecraft Functions you can use predicates with specific random chances, but that requires multiple files and submitting that as a zipped data pack would be at least 1 KB.

To avoid this and have it run solely from commands a player can type in, this uses horses as a random source. When a horse is spawned, it is assigned a random speed between 0.1125 and 0.3375 (the units are arbitrary). The random speed calculation is as follows:

$$0.25(0.45 + 0.3x + 0.3y + 0.3z)$$

Where x, y, and z are uniform independent random variables [0, 1). If you find the cumulative density function by convolving the distribution functions (to get the PDF) and then integrating, you will end up with the following piecewise function:

$$f(x)=\begin{cases}-\frac{9}{16}+15x-\frac{400x^{2}}{3}+\frac{32000x^{3}}{81}&\frac{9}{80}\le x<\frac{3}{16}\\ \frac{29}{4}-110x+\frac{1600x^{2}}{3}-\frac{64000x^{3}}{81}&\frac{3}{16}\le x<\frac{21}{80}\\ -\frac{227}{16}+135x-400x^{2}+\frac{32000x^{3}}{81}&\frac{21}{80}\le x<\frac{27}{80} \end{cases}$$

We need to find the horse speed where the probability of a horse with that speed or lower spawning is one in ten thousand or 0.0001. This can be done by solving the first equation:

$$-\frac{9}{16}+15x-\frac{400x^{2}}{3}+\frac{32000x^{3}}{81} = 0.0001\\ f^{-1}(0.0001)\simeq0.11882574$$

This results in the horse speed being multiplied by 100,000 (because scoreboard values must be integers) and compared with 11883 in the code.

The precision is currently 1.00202 in 10,000. Two bytes can be added or removed for approximately each order of magnitude required. Two additional bytes will make it 1.00012 in 10,000.

• I see no reason to run these separately over putting them all in a .mcfunction file and running that. Apr 27, 2021 at 7:11
• Minecraft datapacks require a pack.mcmeta which would make it too expensive. However, I am not certain of the consensus regarding Minecraft commands.
– Okx
Apr 27, 2021 at 7:20
• I'd argue the pack.mcmeta doesn't count towards the size, only the .mcfunction file. After all, codegolf.stackexchange.com/a/224450/62991 doesn't count the time module's size either. Apr 27, 2021 at 7:23
• Aww, I was hoping you built a giant Redstone computer in the game to run this program, would be hard to give that a byte-count though. Maybe count in number of blocks? Apr 27, 2021 at 18:08
• -50 characters by replacing the second and third lines (the ones with the bat) with: /execute store result score o s run seed Mar 11, 2023 at 7:47

Python 3, 63 59 bytes

My idea was to use the time module as a PRNG since the challenge stated

on average 1 of 10000 times, returns "Minceraft" and the rest of the time returns "Minecraft"

and taking the time mod 10000 does exactly that.

Thanks @movatica for -4

import time
print(f"Min{'ceec'[time.time()%1e4>1::2]}raft")


Try it online!

Alternative, also 59 bytes:

import time
print("Min%sraft"%"ceec"[time.time()%1e4>1::2])


Try it online!

• Right, fixed. :) Apr 26, 2021 at 13:40
• you should add a tio link, so that it's easier for other people to test your code Apr 26, 2021 at 14:13
• Can't you replace time()%1e4>1 and'ec'or'ce' with ['ec','ce'][time()%1e4>1] for -1? Apr 26, 2021 at 14:40
• Welcome to codegolf! 59 bytes Apr 26, 2021 at 17:02
• 45 bytes May 4, 2021 at 19:13

Python 3, 787169 68 bytes

from random import*
f=lambda:f'Min{randint(0,1e4)and"ec"or"ce"}raft'


Try it online!

-7 bytes thanks to @Alex bries

-2 bytes thanks to @Alex bries

• you only need to return it: try it online Apr 25, 2021 at 11:07
• f=lambda:f'Min{__import__("random").randint(0,1e4)and"ec"or"ce"}raft' is 69, but since you can remove f= that evaluates to 67.
– user100690
Apr 25, 2021 at 12:16
• 67 bytes Apr 25, 2021 at 12:34
• 65 bytes Apr 25, 2021 at 12:43
• 63 bytes, I think it warrants its own answer: codegolf.stackexchange.com/a/224450/103324 Apr 26, 2021 at 11:31

Python 3 - 4542 41 Bytes

41 bytes with the constraint of running from a different process every run.

print(f"Min{'ceec'[id(0)%4e4>1::2]}raft")


42 bytes with limited randomness unless running a different process each time [*].

print(f"Min{'ceec'[id({})%4e4>1::2]}raft")


The idea was to use the same wrapper as in here, but a different RNG:
Create a new object (a set dict in this case, because it takes 5 2 characters set() {}), and take the id() of that, which is its memory address.

The memory address acts like a uniform hash[*], which has 1/10000 1/40000 (thanks @ovs) chance to end with zeros.

Try it online!

Update to 42 bytes:
Instead of set(), use {} which is the dict constructor. Can't go shorter for dynamic object creation.

Try it online!

Update to 41 bytes: - use static object creation!
Thanks to @dingledooper
Works only if the program is run in a different process every run!
Instead of {}, use 0.
0 is an object in Python, so it has an address in virtual memory, and that address is constant for that object during the lifetime of the program. If we were to run that in a for loop, it would not be random.
However, if we run it in a new process every run, we get the desired randomness. This is the case in a stateless server.

Try it online!

[*] - Objects in Python are freed immediately when they are no longer referenced (reference counting). Thus, running the solution in a loop might always output the same id, as the memory is freed and allocated at the same address. This is OS dependent, and environment dependent, thus may not work as expected, or in a reproducible way.
Running a new process each time solves this issue.

• Welcome to CGCC, that's a very nice answer! By my experimentation it seems that memory addresses of set() are always divisible by 4, which means you would need to change 1e4 to 4e4 to get the right probability.
– ovs
May 4, 2021 at 21:51
• @ovs wow that's a very nice catch, thanks! May 4, 2021 at 21:55
• Wow. And I thought using time was nice... May 4, 2021 at 23:09
• @Jakque I think this has to be OS specific. I would like to ask a question about this in SO, please add the specifications on which you tested, and the code. May 10, 2021 at 7:03
• instead of using a [::2] selector, it truncates the string to 2 characters, which allows shortening the string to 'cec'. See the python docs for printf-style String Formatting (also known as old string formatting) for more information.
– c--
May 2, 2023 at 19:38

JavaScript, 37 bytes

_=>Min${new Date%1e4?'ec':'ce'}raft  Try It Online First of all, write Min. Then get the current time with new Date. Normally it returns something similar to "2021-10-05T10:29:58.432Z". But if you do a mathematical operation on it, this output becomes the epoch time similar to "1633429932422" (a number, basically). Now divide the number by 10000 (1e4). If the remainder (%) is 0 i.e. false, add ce to Min otherwise add ec. At last, add raft at the end. • Welcome to Code Golf, and nice first answer! May 5, 2021 at 22:17 • Thanks, wonder if anything can be improved here! May 6, 2021 at 6:22 • I'm not that fluent with JavaScript, so I can't really see any improvements you could make. But there might be a way! May 6, 2021 at 16:16 C (gcc), 48 bytes f(){printf("Min%sraft",rand()%10000?"ec":"ce");}  Try it online! Version closer to $$\\frac{1}{10000}\$$ For a pseudorandomness as close to $$\\frac{1}{10000}\$$ as possible: C (gcc), 79 bytes f(){long p=0,m=1e4,i;for(i=m;i--;)p+=rand();printf("Min%sraft",p%m?"ec":"ce");}  Try it online! • Nice! Can you have 1e4 or 1e+4 in C? Apr 25, 2021 at 12:29 • @Ausername float can't be %ed – l4m2 Apr 25, 2021 at 12:47 • @Ausername Yes C has that but it's a float and you need an integral type for a mod (%) expression. Apr 25, 2021 at 19:20 • This will not result in a 1/10000 chance if RAND_MAX is not a multiple of 10000. Apr 26, 2021 at 4:54 • @ericw31415 You might as well post this comment for every answer since they're all using PRNGs that work on scales of powers of $2$. Plus they're PRNGs not RNGs so there's no way to make them perfectly random. Apr 26, 2021 at 13:25 Taxi, 632 bytes Go to Heisenberg's:W 1 R 3 R 1 L.Pickup a passenger going to Divide and Conquer.1073741824e-4 is waiting at Starchild Numerology.Go to Starchild Numerology:N 1 L 3 L 1 L 3 L.Pickup a passenger going to Divide and Conquer.Go to Divide and Conquer:W 1 R 3 R 1 R 2 R 1 R.Pickup a passenger going to Trunkers.Go to Trunkers:E 1 R 3 R 1 L.Pickup a passenger going to The Underground.Go to The Underground:E 1 R 2 L.Switch to plan A if no one is waiting.Minecraft is waiting at Writer's Depot.[A]Minceraft is waiting at Writer's Depot.Go to Writer's Depot:N 3 L 2 L.Pickup a passenger going to Post Office.Go to Post Office:N 1 R 2 R 1 L.  Try it online! There are two sources of randomness in Taxi: Heisenberg's (which holds a random integer passenger), and Firemouth Grill (which can hold any number of passengers, who are picked up in a random order). This program uses Heisenberg's to grab a random number, which will be used to choose one of two strings randomly. Here is the basic control flow of the program: • Go to Heisenberg's and grab a random integer, in the range of $$\[0, 2^{31}-1]\$$. ($$\2^{31}-1\$$ is RAND_MAX in C++, and Taxi uses C++'s random functions.) • Pick up the value 1073741824e-4 (that's $$\\frac{2^{31}}{2 \times 10000}\$$) from Starchild Numerology. • Drop off both passengers at Divide and Conquer, giving us a result of $$\\frac{n}{2^{31}} \times 2 \times 10000\$$, which is a double in the range $$\[0, 2 \times 10000)\$$. (We use this range instead of $$\[0, 10000)\$$ because we will output Minceraft when this number is either 0 or 1.) • Bring this result to Trunkers, which chops off the fractional part. (The range is still $$\[0, 2 \times 10000)\$$.) • Bring this result to The Underground. One of two things will happen: • A passenger will be returned, which means that our number was greater than 1 (which has a $$\\frac{2 \times 10000 - 2}{2 \times 10000}\$$ chance of occurring). Do nothing. • No passenger will be returned, which means that our number was either 0 or 1 (which has a $$\\frac{2}{2 \times 10000}\$$ chance of occurring). Declare the value "Minceraft" at Writer's Depot. • Declare the value "Minecraft" at Writer's Depot. • Pick up the first passenger waiting at Writer's Depot. (If both "Minecraft" and "Minceraft" are waiting, "Minceraft" will be picked up, because it was waiting there first.) • Drop off this passenger at the Post Office, outputting the string and (for purposes of Code Golf) ending the program. Taxi, 691 bytes 1e4 is waiting at Starchild Numerology.Go to Starchild Numerology:W 1 L 2 R 1 L 1 L 2 L.Pickup a passenger going to The Underground.Minceraft is waiting at Writer's Depot.Go to Writer's Depot:E 1 L 2 R.[A]Pickup a passenger going to Cyclone.Go to Cyclone:N.Pickup a passenger going to Firemouth Grill.Pickup a passenger going to Firemouth Grill.Go to Firemouth Grill:S 1 L 2 L 1 R.Go to Fueler Up:E 1 L.Go to The Underground:N.Switch to plan B if no one is waiting.Pickup a passenger going to The Underground.Minecraft is waiting at Writer's Depot.Go to Writer's Depot:N 3 L 2 L.Switch to plan A.[B]Go to Firemouth Grill:S 1 R.Pickup a passenger going to Post Office.Go to Post Office:E 1 R.  Try it online! This program uses Firemouth Grill to hold thousands of "Minecraft" and "Minceraft" strings to choose from randomly. Here is the basic control flow of the program: • Pick up the value 1e4 from Starchild Numerology to use as a counter. • Declare the value "Minceraft" at Writer's Depot and go there (but don't pick it up yet). • Repeat these steps: • Pick up the string currently at Writer's Depot, and clone it at Cyclone. (Having two strings along for the ride will earn us extra gas money!) • Take both clones, and drop them off at Firemouth Grill. • Take our counter, and drop it off at The Underground. One of two things will happen: • A passenger will be left waiting, which was 1 less than our previous counter. Pick up this new counter, and declare the value "Minecraft" at Writer's Depot and go there. At this point, repeat the previous steps. • No passenger will be left waiting, which means that our counter is now 0 and we are done. • Go to Firemouth Grill, and pick up a passenger. It will most likely be "Minecraft", but there's a 1/10000 chance it will be "Minceraft". • Drop off this passenger at the Post Office, outputting the string and (for purposes of Code Golf) ending the program. Taxi, 849 bytes Go to Fueler Up:W 1 R.Switch to plan B.[A]Go to Fueler Up:E 2 L.[B]Go to Heisenberg's:N 3 R 1 L.Pickup a passenger going to Cyclone.Go to Cyclone:N 1 L 3 L.Pickup a passenger going to Magic Eight.Pickup a passenger going to Cyclone.Go to Cyclone:N 1 R 3 R 1 R.Pickup a passenger going to Equal's Corner.Pickup a passenger going to Equal's Corner.Go to Equal's Corner:N 1 R.2e4 is waiting at Starchild Numerology.Go to Starchild Numerology:N 1 R.Pickup a passenger going to Magic Eight.Go to Magic Eight:W 1 R 2 R 1 R.Switch to plan A if no one is waiting.Pickup a passenger going to The Underground.Go to The Underground:E 2 L.Switch to plan C if no one is waiting.Minecraft is waiting at Writer's Depot.[C]Minceraft is waiting at Writer's Depot.Go to Writer's Depot:N 3 L 2 L.Pickup a passenger going to Post Office.Go to Post Office:N 1 R 2 R 1 L.  Try it online! This was my first instinct. It also uses Heisenberg's to generate a random integer within the range $$\[0, 2 \times 10000)\$$, but it does so by repeatedly generating a random number until it is within this range. The taxi has to stop at Fueler Up to refill its gas tank, and it has to clone passengers at Cyclone and drop the clones off at Equal's Corner to make enough money to re-generate random numbers for as long as necessary, but otherwise, the functionality is the same as the 632-byte program. It doesn't depend on the specifics of C++, but it does usually take longer to execute, because generating a small enough random number is rarer. If anyone can improve this one, be my guest. Clojure, 42 bytes #(str"Min"(if(<(rand)1e-4)"ce""ec")"raft")  Try it online! R, 4544 43 bytes if(runif(1)<1e-4,"Minceraft","Minecraft")  Try it online! Boring, but shorter than any more-interesting attempt that I've tried so far... R, 42 bytes (p=0.000101) p=1 in 10000.5 Edit: much closer to exactly 1 in 10000 (for the same bytes) thanks to Robin Ryder if(rexp(1)>1e-4,"Minecraft","Minceraft")  Try it online! Outputs "Minecraft" if an exponentially-distributed random variable is greater than 1e-4. The exponential distribution is governed by a parameter - lambda - that defaults to 1 in the R rexp() function. This gives cumulative p(up to x)=1-exp(-lambda*x), equal to 9.9995e-05 with x=1e-4 and lamda=1, which is pretty close to 1 in 10000 (actually 1 in 10000.5). • Alternate 43 byte solution: c("Minecraft","Minceraft")[1.0001+runif(1)] Apr 27, 2021 at 16:50 • @RobinRyder - That's nice. I also realised we can also get almost to within 1% of the exact probability using a carefully-selected Poisson distribution, which would save 1 byte... Apr 27, 2021 at 18:19 • If you want an approximation of the probability, this is also 42 bytes and is more accurate, with P("Minceraft")=0.000100005. Apr 27, 2021 at 21:10 • @RobinRyder - That's much better! Before I update the answer and credit you, can you just check my maths? Cumulative exponential distribution is 1-exp(-lambda*x), so with (default) rate=lambda=1, p(up to 1e-4)=1-exp(-0.0001)=9.9995e-05, right? In other words, pexp(1,rate=0.0001,lower.tail=T)? Or did I get something upside-down? Apr 27, 2021 at 21:39 • Yes, you are right - the number I gave mistakenly was the value of lambda that would have led to an exact answer. Instead, the probability is indeed 0.000099995. Apr 28, 2021 at 6:20 Charcoal, 17 bytes MinＰceraft¿‽×χφec  Try it online! Link is to verbose version of code. Explanation: Min  Print Min. Ｐceraft  Print ceraft without moving the cursor. ¿‽×χφ  If a random number in the range [0..10000) is nonzero, then... ec  ... correct it to ec. Retina, 29 bytes  ce9999*$(ec
L@$.. Min$&raft


Try it online! Explanation:


ce9999*$(ec  Insert ce and 9999 copies of ec. L@..  Select one of the pairs of letters at random.... L$
Min$&raft  ... and wrap it between Min and raft. 05AB1E, 17 bytes ’£Ì³±’œ4°LΩΘ5!*è™  Try it online! ’£Ì³±’ -- "minecraft" œ -- permutations: ["minecraft", "minecratf", ...] 4°LΩ -- random integer in the range 1..10000 Θ -- 1 if it’s equal to 1, 0 otherwise 5!* -- multiply by 5! (120) è -- index into the list of permutations ™ -- titlecase  APL, 26 bytes 'Min','raft',⍨'ec'⌽⍨1=?1E4  Saved 1 byte thanks to Adam • Welcome to Code Golf, and nice first answer! If you're interested in learning more APL, feel free to drop by The APL Orchard Dec 24, 2021 at 16:14 • 10*4 is 1E4 – Adám Dec 29, 2021 at 11:35 Minecraft, 226 bytes. /scoreboard objectives add d dummy /scoreboard players set c d 2147054151 /execute store result score s d run seed /execute if score s d < c d run tellraw @s "Minecraft" /execute if score s d >= c d run tellraw @s "Minceraft"  (Includes a trailing newline, to run the final command) I saw the other Minecraft answer by Okx and had some suggestions. I would've put them in the comments of the other response, but I figured I changed it enough for its own submission, and another CGSE member said it's fine so whatever. I'm only just now noticing the only change I made was using /seed. Ah, well. The things you learn when you have five ideas for improvements and four of them don't work. PowerShell, 38 bytes "Min$(('ec','ce')[!(random 1e4)])raft"


Try it online!

• I don't know Powershell, but 1000 is 1e4, not 1e5. Is that a mistake? Apr 25, 2021 at 12:58
• thanks. The rule is "The game Minecraft has a 1 in 10000 chance". 10000 == 1e5 isn't it? Apr 25, 2021 at 13:04
• Sorry, typo in my original comment. I meant 10000, not 1000. However 10000 == 1e4: Try it online! A helpful way to remember is that the number after the 1e counts the zeros, not the digits Apr 25, 2021 at 13:05
• Of course!) I'm sorry. Fixed. Thank you! Apr 25, 2021 at 13:07

+55:$< |-1*:*: >:#,_@ |< ^ "Min"<  Try it online! Uses rejection sampling to generate a random integer between 0 and 9999 inclusive, and then swaps the letters if that number is 0. I abused some coincidences that arose in my code to golf it. • is the null byte printed after "Minecraft" intentional? Dec 28, 2021 at 4:02 • @Razetime No, it wasn't. I fixed it and removed 3 bytes. Thanks! – user101133 Dec 28, 2021 at 4:48 Vyxal, 2720 18 bytes ↔ṅ₴k2ṁċ[ec|ce]₴r…ż,  Try it Online! Edit: this is actually 7 less bytes, at only 20: k2ṁ[↓∑ġ¬|↔ṅ⇩ṡ…ż]  Try it Online! Edit 2: Thanks to @emanresu A, this has been shortened to 18 bytes. k2ṁ[↓∑ġ¬|↔ṅ⇩ṡ…ż  Try it Online! • Welcome to Code Golf, and nice first answer! Feb 15, 2023 at 18:37 • @TheThonnu Thanks, glad to finally be able to get an answer worth submitting to one of these. Feb 15, 2023 at 18:52 • Nice! You don't need the closing ] or backtick. Feb 15, 2023 at 19:08 • @emanresuA forgot about that, thanks. Feb 15, 2023 at 20:06 Bash, 43 bytes x=(ce ec);echo Min${x[RANDOM%9999?1:0]}raft


Try it online!

RANDOM%9999 has a range of [0,9999], and in bash 0 evaluates to false, so the ternary works as expected. Supposedly, the $RANDOM function has an "approximately linear distribution", but I haven't proved that with a million iterations. Hat-tip to the Zsh solution. JavaScript, 51 44 bytes _=>Min${Math.random()*1e4>1?'ec':'ce'}raft


try it online

That's a lotta bytes for such a simple task...

-7 thanks to the OP

• 44 bytes: _=>Min${Math.random()*1e5>1?'ec':'ce'}raft - Try it online! Apr 25, 2021 at 10:48 • or a=>Min${+new Date%10001?'ec':'ce'}raft; but doesn't work consecutively Apr 25, 2021 at 10:59
• What's strange here is that someone still upvoted my answer even though I (accidentally) used 1e5 instead of the correct 1e4.
– user100690
Apr 25, 2021 at 11:15
• Why not >1e-4 if you use Math.random()?
– l4m2
Apr 25, 2021 at 12:48
• @TimSeguine your right, then it should be 37 bytes _=>"Min${new Date%1e4?'ec':'ce'}raft" Apr 27, 2021 at 12:47 Bash, 59 bytes printf "%0.sMinecraft\n" {0..9999}|sed '1s/ec/ce/'|shuf -n1  Try it online! Change 9999 to 1 to see it work with 50% probability. Repeats the line "Minecraft" 10,000 times. Changes the first line only to "Minceraft". Shuffles the lines randomly and returns the first. • -1 byte: Replace \n to actual newline character. Try It Online May 5, 2021 at 8:39 Factor, 40 38 bytes 1e-4 [ "Minceraft"] [ "Minecraft"] ifp  Try it online! -2 bytes thanks to @Bubbler! Factor has a version of if called ifp that calls either quotation depending on a probability. There is also an interpolating version that is slightly longer: 1e4 random 1 < "ce""ec"? [I Min${}raftI]

• You can omit spaces after closing " :) Apr 26, 2021 at 0:01

Ruby, 35 34 bytes

\$><<"Min#{rand<1e-4?:ce: :ec}raft"


Try it online!

Thanks to Dingus for a saved byte.

• If we consider $$ as random number, then we can make it 1b shorter ><<"Min#{$$%1e3<1?:ce: :ec}raft" Jan 7, 2022 at 9:46

Excel, 41 40 bytes

-1 byte thanks to MarcMush

="Min"&IF(RAND()<0.1^4,"ce","ec")&"raft"
`

I tried typing 0.0001 as 1E-4 to save two bytes. Excel changes it to 0.0001.