Progress:[#######---] (69%)
Entries: 69
Leading with smallest size:
Jacobly, with a 70 byte program written in Jelly!
Leading with most entries:
Also Jacobly, with 25 submissions!

Introduction
The goal of this challenge is for users of Cemetech to cooperate in order to submit one hundred different programs before the deadline, but also for you to see how many languages you feel comfortable using! At the end of the contest, you will be ranked by how many programs you have submitted, and you’ll even get a snazzy userbar to show off your rank if you wish! However, you may not submit multiple programs in the same language. Hence, a program in TI-BASIC and another in C is okay, but writing two in C is not.

What to make
You will need to write a program which displays the following Ascii Christmas Tree and then places ornaments (also Ascii Characters) on the tree to decorate it. You are allowed to make the ornament placing as complex as you want, but bear in mind that you MUST display a Christmas Tree with ornaments. The tree you will display is here, and as for what you use for ornaments that is up to you. Very Happy Every time the program is run, a different pattern of ornaments should be displayed on the tree.

Code:
           *
         _/ \_
        \     /
        /_/^\_\
         /   \
        /     \
       /       \
      /         \
     /           \
    /-------------\
       [_______]
        \_____/


For every program you submit, your score will go up. At the end of the challenge, you will receive a rank and userbar based on your score.

Rules
1. You may submit as many programs as you like, provided they are all written in different programming languages.
2. You are allowed to use any esolang or programming language which has an interpreter or compiler at the time this post was written.
3. You must, above all else, have fun! (While still obeying the other rules of course Smile)

Submission and Deadline
Each entry must be posted in this topic (or PM'd to me if you wish) to me by January 1, 2021 at 12:00 AM (Midnight) EST (This is the midnight after January 1). Along with the source code you may include an image of what the program looks like when it is running. Please remember to decorate your tree with ornaments (More than 1. I only must specify this because some users seemed to think this meant 0), and also please say how large your program is.

Have fun, happy programming, and if you have any questions, please post them here! Very Happy

EDIT: From now on, instead of simply displaying a tree with ornaments (That is way too easy) you must display a tree and then display a random pattern of ornaments on the tree. The pattern should be different each time the program is run. Also, to make things fair, I will request that all entries before 1:00 PM (12/3/20) will be disqualified until modified to fit the new rules Crying
Python: 229 bytes

Code:

print("           *\n         _/ \\_\n        \\     /\n        /_/^\\_\\\n         /  O\\\n        /o    \\\n       /       \\\n      /  o    o \\\n     /  o        \\\n    /-------------\\\n       [_______]\n        \\_____/")


perl: 231 bytes

Code:

print("           *\n         _/ \\_\n        \\     /\n        /_/^\\_\\\n         /  O\\\n        /o    \\\n       /       \\\n      /  o    o \\\n     /  o        \\\n    /-------------\\\n       [_______]\n        \\_____/")
;

Smile BASIC for the Nintendo 3DS/XL/New | 311 bytes


Code:

CLS
PRINT "Happy holidays!
?"
PRINT "           *
PRINT "         _/ \_
PRINT "        \     /
PRINT "        /_/^\_\
PRINT "         /o  \
PRINT "        /  o  \
PRINT "       /    o  \
PRINT "      /    o    \
PRINT "     /  o    o o \
PRINT "    /-------------\
PRINT "       [_______]
PRINT "        \_____/
pascal: 381 bytes

Code:

PROGRAM tree;
BEGIN
writeln('           *'+sLineBreak+'         _/ \_'+sLineBreak+'        \     /'+sLineBreak+'        /_/^\_\'+sLineBreak+'         /  O\'+sLineBreak+'        /o    \'+sLineBreak+'       /       \'+sLineBreak+'      /  o    o \'+sLineBreak+'     /  o        \'+sLineBreak+'    /-------------\'+sLineBreak+'       [_______]'+sLineBreak+'        \_____/')
;

END.








c:267 bytes

Code:

#include<stdio.h>

int main(void){
   puts("           *\n         _/ \\_\n        \\     /\n        /_/^\\_\\\n         /  O\\\n        /o    \\\n       /       \\\n      /  o    o \\\n     /  o        \\\n    /-------------\\\n       [_______]\n        \\_____/");
}



c++: 273 bytes


Code:

#include<iostream>

int main(void){
   std::cout<<"           *\n         _/ \\_\n        \\     /\n        /_/^\\_\\\n         /  O\\\n        /o    \\\n       /       \\\n      /  o    o \\\n     /  o        \\\n    /-------------\\\n       [_______]\n        \\_____/";
}


java: 495 bytes


Code:

import java.io.InputStream;
import java.net.Socket;
import java.net.URL;
import java.net.URLConnection;
import java.util.Scanner;

public class treething {
   public static void main(String[] args) throws Throwable{
      URL ur = new URL("https://michaelti.neocities.org/data/tree.txt");
      URLConnection conn = ur.openConnection();
      InputStream is = conn.getInputStream();
      Scanner sc = new Scanner(is);
      sc.useDelimiter("\\A");
      while(sc.hasNextLine())
      System.out.println(sc.nextLine());
   }
}




brainf: 950 bytes

Code:

++++[->++++++++<]>...........++++++++++.>++++++++++.[->+++<]>++.........[->+++<]>-.-[-->+<]>.+[--->++<]>.-[->+++<]>-.+++.>++++++++++.[->+++<]>++........-[->+++<]>-.+[--->+<]>+.....[-->+++<]>-.>++++++++++.[->+++<]>++........[-->+++<]>-.[->++<]>+.-[-->+<]>.[->++<]>.--.+++.---.[++>---<]>.[->+++<]>++.........[-->+++<]>-.+[--->++<]>...-[->+++<]>-.[++>---<]>.[->+++<]>++........[-->+++<]>-.+[--->++<]>..+++++[->+++<]>.[--->+<]>-----..-[->+++<]>-.[++>---<]>.[->+++<]>++.......[-->+++<]>-.+[--->++<]>....+++++[->+++<]>.[--->+<]>-----..-[->+++<]>-.[++>---<]>.[->+++<]>++......[-->+++<]>-.+[--->++<]>...+++++[->+++<]>.[--->+<]>-----.....-[->+++<]>-.[++>---<]>.[->+++<]>++.....[-->+++<]>-.+[--->++<]>..+++++[->+++<]>.[--->+<]>-----.....+++++[->+++<]>.[--->+<]>-----..-[->+++<]>-.[++>---<]>.[->+++<]>++....[-->+++<]>-.--.............+[->++<]>.[++>---<]>.[->+++<]>++.......--[->+++<]>+.++++.......--.>++++++++++.[->+++<]>++........-[->+++<]>-.+++.....-[-->+<]>.


sh: 51 bytes... IDK if this is even legal...

Code:

curl https://michaelti.neocities.org/data/tree.txt
Python3: 214 Bytes


Code:
print(f"{(s:=' '*6)}   *\n{s} _/ \_\n{s}\\     /\n{s}/_/^\_\\\n"+'\n'.join(f"  {' '*i}/{' '*(13-2*i-(n:=__import__('random').randrange(3)))}{'o'*n}\\" for i in range(5,0,-1))+f"\n  /{'-'*13}\\\n{' '*5}[{'_'*7}]\n{s}\{'_'*5}/")
Perl:89 bytes

Code:

$rnd = int(rand(2));
system("curl https://michaelti.neocities.org/data/tree${rnd}.txt");

EDIT: NVM, that's illegal now.
Total: 3 10 15 25

Jelly (88 70 bytes) [Obligatory Jelly entry from me, hopefully it counts, since it can now only output 64 different patterns.]
Code:
“HỌLƓ9ọL$(Ḍẏk>P]®ɲẹse®\v1£OcB’ḃ9s2Œṙs8ŒBŒHị"Ø<Ẋ;"“/\[ -_*^“\/] -_”¤Ɗ€Y

Pyth (78 bytes) [Using the Jelly code page for web encoding reasons]

Code:
s.icrX."[n\ÑȤ”ẉ=ÄI|ḢẒẠȮ×ƙẓ5'⁼Ȯuẓṃ⁼ṣÐ|BɲzLẈẹ‘“^ɲ\ḌÞṢ©ƥ8®"Gs+"*½/ -"ST9\`OM*]G35
[Or as an unclickable link]
data:application/octet-stream;base64,cy5pY3JYLiJbblwQmv%2FjPeJJfMW9q8oRoeU1J4zKdeXbjN8PfEKjeky71vz%2BXqNcrRS3BqQ4CCJHcysiKgovIC0iU1Q5XGBPTSpdRzM1
[Or a hex dump]

Code:
0000000 73 2e 69 63 72 58 2e 22 5b 6e 5c 10 9a ff e3 3d  >s.icrX."[n\....=<
0000016 e2 49 7c c5 bd ab ca 11 a1 e5 35 27 8c ca 75 e5  >.I|.......5'..u.<
0000032 db 8c df 0f 7c 42 a3 7a 4c bb d6 fc fe 5e a3 5c  >....|B.zL....^.\<
0000048 ad 14 b7 06 a4 38 08 22 47 73 2b 22 2a 0a 2f 20  >.....8."Gs+"*./ <
0000064 2d 22 53 54 39 5c 60 4f 4d 2a 5d 47 33 35        >-"ST9\`OM*]G35<
0000078

CJam (93 bytes) [Using the Jelly code page for web encoding reasons]

Code:
"; ȥẆ4ṂƁ*3Ạ4ƭṠ<ŻÇ<ÄẠ5Ɠ⁺⁼ḷN)Ṃy8ƥṠẓŒ⁺,ṛa8ɲ|ẊÄɓ#ṗ⁼ḟṠ"256b8b2/e~ee{~\" ]*[^"="o "mR" -/\_"++=}%
[Or as an unclickable link]
data:application/octet-stream;base64,IjsgwqrDjzTCs8KPKjPCqzTCqMONPMOSDjzDosKrNcKTworCjMOaTinCs3k4wqTDjcOlE8KKLMOeYTjCo3zDkMOiwpsjw7IKwozDq8ONIjI1NmI4YjIvZX5lZXt%2BXCIgXSpbXiI9Im8gIm1SIgogLS9cXyIrKz19JQ%3D%3D
[Or a hex dump]

Code:
0000000 22 3b 20 c2 aa c3 8f 34 c2 b3 c2 8f 2a 33 c2 ab  >"; ....4....*3..<
0000016 34 c2 a8 c3 8d 3c c3 92 0e 3c c3 a2 c2 ab 35 c2  >4....<...<....5.<
0000032 93 c2 8a c2 8c c3 9a 4e 29 c2 b3 79 38 c2 a4 c3  >.......N)..y8...<
0000048 8d c3 a5 13 c2 8a 2c c3 9e 61 38 c2 a3 7c c3 90  >......,..a8..|..<
0000064 c3 a2 c2 9b 23 c3 b2 0a c2 8c c3 ab c3 8d 22 32  >....#........."2<
0000080 35 36 62 38 62 32 2f 65 7e 65 65 7b 7e 5c 22 20  >56b8b2/e~ee{~\" <
0000096 5d 2a 5b 5e 22 3d 22 6f 20 22 6d 52 22 0a 20 2d  >]*[^"="o "mR". -<
0000112 2f 5c 5f 22 2b 2b 3d 7d 25                       >/\_"++=}%<
0000121

Ruby (185 bytes)

Code:
puts'       *
     _/ \_
    \     /
    /_/^\_\
     /ooo\
    /ooooo\
   /ooooooo\
  /ooooooooo\
 /ooooooooooo\
/-------------\
   [_______]
    \_____/
'.gsub(/o/){|c|rand<0.7?' ':c}

JavaScript (216 bytes)

Code:
console.log(String.raw`       *
     _/ \_
    \     /
    /_/^\_\
     /ooo\
    /ooooo\
   /ooooooo\
  /ooooooooo\
 /ooooooooooo\
/-------------\
   [_______]
    \_____/`.replace(/o/g,x=>Math.random()<.3?'o':' '))

C (218 bytes)

Code:
main(a){srand(time(0));for(char*b=")6#@# '6#u#E#6#r#u# &6#r'6#E# &6#E#u#E#t#r#u#r# '6#E%y#r# &6#E'y#r# %6#E)y#r# $6#E+y#r# #6#E-y#r# #E/C#r# %6#q)u#s# &6#r'u#E";a=*b++;b++)while(a-->34)putchar(*b>'u'&rand()?32:*b-22);}

Swift (218 bytes)

Code:
for c in#"""
       *
     _/ \_
    \     /
    /_/^\_\
     /ooo\
    /ooooo\
   /ooooooo\
  /ooooooooo\
 /ooooooooooo\
/-------------\
   [_______]
    \_____/
"""#{print(c=="o"&&Bool.random() ?" ":c,terminator:"")}

C# (220 bytes)

Code:
foreach(char a in@"       *
     _/ \_
    \     /
    /_/^\_\
     /ooo\
    /ooooo\
   /ooooooo\
  /ooooooooo\
 /ooooooooooo\
/-------------\
   [_______]
    \_____/")Console.Write(a>95&&new Random().Next(4)!=0?' ':a)

PHP (225 bytes)

Code:
       *
     _/ \_
    \     /
    /_/^\_\
     /<?php function a($b){while($b--)echo(rand()&3?' ':'o');}a(3)?>\
    /<?php a(5)?>\
   /<?php a(7)?>\
  /<?php a(9)?>\
 /<?php a(11)?>\
/-------------\
   [_______]
    \_____/

Python 3 (232 bytes)

Code:
import random
for c in r'''       *
     _/ \_
    \     /
    /_/^\_\
     /ooo\
    /ooooo\
   /ooooooo\
  /ooooooooo\
 /ooooooooooo\
/-------------\
   [_______]
    \_____/''':print(c if c<'o'or random.random()<.3else' ',end='')

Wolfram Language (233 bytes)

Code:
StringReplace["       *
     _/ \_
    \\     /
    /_/^\_\\
     /ooo\\
    /ooooo\\
   /ooooooo\\
  /ooooooooo\\
 /ooooooooooo\\
/-------------\\
   [_______]
    \_____/","o"->If[Hold[RandomReal[]]<.7," ","o"]]//ReleaseHold//Print

Bash (245 bytes)

Code:
a='       *
     _/ \_
    \     /
    /_/^\_\
     /ooo\
    /ooooo\
   /ooooooo\
  /ooooooooo\
 /ooooooooooo\
/-------------\
   [_______]
    \_____/'
for((b=0;b<${#a};b++));do((RANDOM&1))&&[[ ${a:b:1}>95 ]]&&printf \ ||printf "${a:b:1}";done

Lua 5.3 (248 bytes)

Code:
math.randomseed(os.time())print((([[       *
     _/ \_
    \     /
    /_/^\_\
     /ooo\
    /ooooo\
   /ooooooo\
  /ooooooooo\
 /ooooooooooo\
/-------------\
   [_______]
    \_____/]]):gsub('o',function()return .7>math.random()and' 'or'o'end)))

AWK (251 bytes)

Code:
END{srand();for(i=1;i<150;i++){a=substr("       *\n     _/ \\_\n    \\     /\n    /_/^\\_\\\n     /ooo\\\n    /ooooo\\\n   /ooooooo\\\n  /ooooooooo\\\n /ooooooooooo\\\n/-------------\\\n   [_______]\n    \\_____/",i,1);printf(a>"_"&&rand()<.7?" ":a)}}

><> (256 bytes)

Code:
      '/_____\    '\
a    ']_______[   '\
a '\-------------/'\
a  '\ooooooooooo/ '\
a   '\ooooooooo/  '\
a    '\ooooooo/   '\
a     '\ooooo/    '\
a      '\ooo/     '\
a     '\_\^/_/    '\
a     '/     \    '\
a      '_\ /_     '\
<v?=@' o':;!?l    o<~
^x$

Common Lisp (263 bytes)

Code:
(princ(let((a(make-random-state t)))(map'string(lambda(b)(if(and(eq b #\o)(<(random 4 a)3))#\  b))"       *
     _/ \\_
    \\     /
    /_/^\\_\\
     /ooo\\
    /ooooo\\
   /ooooooo\\
  /ooooooooo\\
 /ooooooooooo\\
/-------------\\
   [_______]
    \\_____/")))

Haskell (267 bytes)

Code:
import System.Random;main=sequence$map(\a->randomIO>>= \b->putChar$if a>'_'&&b then ' 'else a)"       *\n     _/ \\_\n    \\     /\n    /_/^\\_\\\n     /ooo\\\n    /ooooo\\\n   /ooooooo\\\n  /ooooooooo\\\n /ooooooooooo\\\n/-------------\\\n   [_______]\n    \\_____/"

C++, Unix (269 bytes)

Code:
#include<cstdio>
#include<unistd.h>
int main(){int a,b;getentropy(&a,4);for(char*c=")6#@# '6#u#E#6#r#u# &6#r'6#E# &6#E#u#E#t#r#u#r# '6#E%y#r# &6#E'y#r# %6#E)y#r# $6#E+y#r# #6#E-y#r# #E/C#r# %6#q)u#s# &6#r'u#E";b=*c++;c++)while(b-->34)putchar(*c>'u'&(a^=a/2)?32:*c-22);}

Go (273 bytes)

Code:
package main;import("fmt";"time");func main(){a:=time.Now().Unix();for _,b:=range`     _/ \_
    \     /
    /_/^\_\
     /ooo\
    /ooooo\
   /ooooooo\
  /ooooooooo\
 /ooooooooooo\
/-------------\
   [_______]
    \_____/`{a^=a/4;if a&3<3&&b>95{b=' '};fmt.Printf("%c",b)}}

Java 8 (288 bytes)

Code:
interface A{static void main(String[]a){for(char b:"       *\n     _/ \\_\n    \\     /\n    /_/^\\_\\\n     /ooo\\\n    /ooooo\\\n   /ooooooo\\\n  /ooooooooo\\\n /ooooooooooo\\\n/-------------\\\n   [_______]\n    \\_____/".toCharArray())System.out.print(b>95&&Math.random()<.7?' ':b);}}

jq (292 bytes) [requires arguments --null-input --join-output]

Code:
def a:.,(.*5|.-floor|a);"       *\n     _/ \\_\n    \\     /\n    /_/^\\_\\\n     /ooo\\\n    /ooooo\\\n   /ooooooo\\\n  /ooooooooo\\\n /ooooooooooo\\\n/-------------\\\n   [_______]\n    \\_____/"|explode|[.,[limit(length;now|a)]]|transpose|map(if.[0]>96and.[1]<.5then 32else.[0]end)|implode

Rust (328 bytes)

Code:
use std::time::SystemTime as a;fn main(){let mut b=a::now().duration_since(a::UNIX_EPOCH).unwrap().as_secs();for c in r"       *
     _/ \_
    \     /
    /_/^\_\
     /ooo\
    /ooooo\
   /ooooooo\
  /ooooooooo\
 /ooooooooooo\
/-------------\
   [_______]
    \_____/".chars(){b^=b/2;print!("{}",if'_'<c&&b&3<3{' '}else{c});}}

Zig (355 bytes)

Code:
var a=@import("std");pub fn main()!void{var b:i8=0;try a.os.getRandomBytes(a.mem.asBytes(&b));var d=\\       *
\\     _/ \_
\\    \     /
\\    /_/^\_\
\\     /ooo\
\\    /ooooo\
\\   /ooooooo\
\\  /ooooooooo\
\\ /ooooooooooo\
\\/-------------\
\\   [_______]
\\    \_____/
;for(d)|*e|{if(e.*>95 and b<0)e.* =32;b*%=7;}try(try a.io.getStdOut()).write(d);}

fasm, x86, Linux (419 bytes)

Code:
format ELF executable
m fix mov
c fix ecx
macro i A,B{m eax,A
m ebx,B
int 128}_start:m c,s
l:rdrand ax
ja l
sar al,7
or al,95
cmp [c],al
m edx,s
push c
cmova c,edx
m edx,1
i 4,1
pop c
inc c
cmp [c],al
ja l
i 1,0
n=10
s db "       *",n,"     _/ \_",n,"    \     /",n,"    /_/^\_\",n,"     /ooo\",n,"    /ooooo\",n,"   /ooooooo\",n,"  /ooooooooo\",n," /ooooooooooo\",n,"/-------------\",n,"   [_______]",n,"    \_____/",0

LLVM IR (641 602 bytes)

Code:
%a=type i32@a=global[150x i8]c"       *\0A     _/ \5C_\0A    \5C     /\0A    /_/^\5C_\5C\0A     /ooo\5C\0A    /ooooo\5C\0A   /ooooooo\5C\0A  /ooooooooo\5C\0A /ooooooooooo\5C\0A/-------------\5C\0A   [_______]\0A    \5C_____/\00"declare%a@putchar(i8)declare%a@srand(%a)declare%a@time(i8*)declare i1@rand()define%a@main(){call%a@time(i8*null)call%a@srand(%a%1)br label%10icmp ult i8%12,96call i1@rand()or i1%4,%5select i1%6,i8%12,i8 32call%a@putchar(i8%7)getelementptr i8,i8*%11,%a 1br label%10phi i8*[bitcast([150x i8]*@a to i8*),%0],[%9,%3]load i8,i8*%11icmp ne i8%12,0br i1%13,label%3,label%14ret%a 0}
Is there an award for ugliest code? I would definitely win that one...
perl: 746 bytes

Code:

#!/usr/bin/perl

$a=' ';
$b='\\';
$c='/';
$d='-';
$e='
';
$f='_';
$g = int(rand(2))?'/':'O';
$h='o';
                      $o=
                   ($a x 11)
                   .'*'.$e.
                     ($a
                    x9).$f
                  .$c.$a.$b
                 .$f.$e. ($a
                x8).$b.($a x5)
              .$c.$e.($a x8).$c.
             $f.$c.'^'.$b.$f.$b .
            $e. ($a x9).$c.($a x3)
          .$b. $e.($a x8).$c.($a x5
          ).$h.$e.($a x7).$c.($a x7).
         $b.$e.($a x6).$g.($a x9).$b.#
        $e.($a x5).$c.($a x11) .$b.$e.#
      ($a x 4).$c.($d x13).$b.$e.($a x7
                ).'['.($f##
                x7).']'.$e#
                .($a x8).$b
            .$f.$f.$f.$f.$f.$c
;
print $o;

Perl: 234 bytes


Code:

$t="       *
     _/ \\_
    \\     /
    /_/^\\_\\   
     /eee\\
    /eeeee\\
   /eeeeeee\\
  /eeeeeeeee\\
 /eeeeeeeeeee\\
/-------------\\
   [_______]
    \\_____/";foreach$c(split//,$t){print($c eq"e"?chr(int(rand(5))+65):$c);}



c: 270 bytes
relies on the foreach c extension

Code:

#include<stdlib.h>
#include<stdio.h>
int main(){for(char s:"       *\n     _/ \\_\n    \\     /\n    /_/^\\_\\\n     /eee\\\n    /eeeee\\\n   /eeeeeee\\\n  /eeeeeeeee\\\n /eeeeeeeeeee\\\n/-------------\\\n   [_______]\n    \\_____/")putc((s=='e'?rand()%5+s:s),stdout);}


and c++ with 251 bytes

Code:

#include<iostream>
int main(){for(char s:"       *\n     _/ \\_\n    \\     /\n    /_/^\\_\\\n     /eee\\\n    /eeeee\\\n   /eeeeeee\\\n  /eeeeeeeee\\\n /eeeeeeeeeee\\\n/-------------\\\n   [_______]\n    \\_____/")std::cout<<(s=='e'?rand()%5+s:s);}
I'm now at 21!

Python on the TI-84+ CE, 915 bytes.

Code:
from ti_system import *
import ti_plotlib as plt
from random import *
def deco():
  dec=[" ","o","c"," ","*","<"," ","I"]
  p=randint(0,7)
  d=dec[p]
  return d

plt.cls()
plt.text_at(1,"* ","center")
plt.text_at(2,"_/ \_ ","center")
plt.text_at(3,"\     / ","center")
plt.text_at(4,"/_/^\_\ ","center")
plt.text_at(10,"/-------------\ ","center")
plt.text_at(11,"[-------] ","center")
plt.text_at(12,"\_____/ ","center")

while not escape():
  a="/{} {}\ "
  b=a.format(deco(),deco())
  plt.text_at(5,b,"center")
  a="/{} {}{} \ "
  b=a.format(deco(),deco(),deco())
  plt.text_at(6,b,"center")
  a="/{}{} {} {} \ "
  b=a.format(deco(),deco(),deco(),deco())
  plt.text_at(7,b,"center")
  a="/ {} {}{} {} {}\ "
  b=a.format(deco(),deco(),deco(),deco(),deco())
  plt.text_at(8,b,"center")
  a="/{} {} {}{} {} {} \ "
  b=a.format(deco(),deco(),deco(),deco(),deco(),deco())
  plt.text_at(9,b,"center")

Screenshot :





Shel script (482 bytes):

Code:
#!/bin/sh
for (( ;; ))
do
d () {
    a=$((RANDOM %= 8))
    b=("." "O" "C" "." "+" "<" "." "I")
    d=${b[$a]}
    echo $d
}
clear
echo "          *"
echo "        _/ \_"
echo "       \     /"
echo "       /_/^\_\ "
echo "        /$(d) $(d)\ "
echo "       /$(d) $(d)$(d) \ "
echo "      /$(d)$(d) $(d) $(d) \ "
echo "     / $(d) $(d)$(d) $(d) $(d)\ "
echo "    /$(d) $(d) $(d)$(d) $(d) $(d) \ "
echo "   /-------------\ "
echo "      [_______]"
echo "       \_____/"
sleep .5
done

screenshot:



C (700 bytes)(looks similar to the shell script):

Code:
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<unistd.h>
char* te() {
char* list[7]={".","+","C",".","O","*"," "};
char* f=list[((rand())%7)];
return f;
}
int main(void)
{
srandom(time(NULL));
for (;;){
system("clear");
printf("          *\n        _/ \\_\n       \\     /\n       /_/^\\_\\ \n%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s","        /",te()," ",te(),"\\ \n","       /",te()," ",te(),te()," \\ \n","      /",te(),te()," ",te()," ",te()," \\ \n","     / ",te()," ",te(),te()," ",te()," ",te(),"\\ \n","    /",te()," ",te()," ",te(),te()," ",te()," ",te()," \\ \n   /-------------\\ \n      [_______]\n       \\_____/\n");
sleep(1);}}




C++ (650 bytes):

Code:
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <unistd.h>
using namespace std;
char o(){
char l[7]={'.','+','C','.','O','*',' '};
int a=(rand() % 7);char d=l[a];return d;}
int main() {
  srand((int) time(0));
  for(;;){
  cout << "          *\n        _/ \\_\n       \\     /\n       /_/^\\_\\ \n        /"<<o()<<" "<<o()<<"\\\n       /"<<o()<<" "<<o()<<o()<<" \\\n      /"<<o()<<o()<<" "<<o()<<" "<<o()<<" \\\n     / "<<o()<<" "<<o()<<o()<<" "<<o()<<" "<<o()<<"\\\n    /"<<o()<<" "<<o()<<" "<<o()<<o()<<" "<<o()<<" "<<o()<<" \\\n   /-------------\\ \n      [_______]\n       \\_____/\n";
  sleep(1);system("clear");}
  return 0;
}




C# (1177 bytes):

Code:
using System;
using System.Threading;
namespace Tree
{class bla{   static string b(){
    string[] l={".","+","C",".","O","*"," "};
    Random Random = new Random();int a=(Random.Next()%7);string d=l[a];return d;}
   static void Main(string[] args)
    {for (;;){Console.Clear();Console.Write("          *\n        _/ \\_\n       \\     /\n       /_/^\\_\\ \n        /");Console.Write(b());Console.Write(" ");Console.Write(b());Console.Write("\\\n       /");Console.Write(b());Console.Write(" ");Console.Write(b());Console.Write(b());Console.Write(" \\\n      /");Console.Write(b());Console.Write(b());Console.Write(" ");Console.Write(b());Console.Write(" ");Console.Write(b());Console.Write(" \\\n     / ");Console.Write(b());Console.Write(" ");Console.Write(b());Console.Write(b());Console.Write(" ");Console.Write(b());Console.Write(" ");Console.Write(b());Console.Write("\\\n    /");Console.Write(b());Console.Write(" ");Console.Write(b());Console.Write(" ");Console.Write(b());Console.Write(b());Console.Write(" ");Console.Write(b());Console.Write(" ");Console.Write(b());Console.Write(" \\\n   /-------------\\ \n      [_______]\n       \\_____/\n");Thread.Sleep(500);}}}}




Go (596 bytes):

Code:
package main
import (
"fmt"
"math/rand"
"time"
)

func d() string{
   list:=[7]string{".","+","C",".","O","*"," "};
   f:=list[rand.Intn(7)];
   return f;
}
func main() {
   for {
   rand.Seed(time.Now().UTC().UnixNano());
   fmt.Print("          *\n        _/ \\_\n       \\     /\n       /_/^\\_\\ \n        /"+d()+" "+d()+"\\ \n       /"+d()+" "+d()+d()+" \\ \n      /"+d()+d()+" "+d()+" "+d()+" \\ \n     / "+d()+" "+d()+d()+" "+d()+" "+d()+"\\ \n    /"+d()+" "+d()+" "+d()+d()+" "+d()+" "+d()+" \\ \n   /-------------\\ \n      [_______]\n       \\_____/\n");
   time.Sleep(500 * time.Millisecond);
   }
}




Kotlin (639 bytes):

Code:
package org.kotlinlang.play   
import kotlin.random.Random

fun d(): String {
   var a: List<String> = listOf(".","+","C",".","O","*"," ");
    val r = Random(System.nanoTime());
    var q: Int = (0..6).random(r)
   var f: String =a[q];
   return f;
}
fun main() {
    while (1!=2){
   print("          *\n        _/ \\_\n       \\     /\n       /_/^\\_\\ \n        /"+d()+" "+d()+"\\ \n       /"+d()+" "+d()+d()+" \\ \n      /"+d()+d()+" "+d()+" "+d()+" \\ \n     / "+d()+" "+d()+d()+" "+d()+" "+d()+"\\ \n    /"+d()+" "+d()+" "+d()+d()+" "+d()+" "+d()+" \\ \n   /-------------\\ \n      [_______]\n       \\_____/\n");
   Thread.sleep(500);
    }
}





Nim (530 bytes):

Code:
import random, times, os
randomize()
proc d(): string =
  let a = rand(7)
  var b: array[0..7, string]
  b = [".","O","C",".","+","<",".","I"]
  let c = b[a]
  result = c
while 1 != 2:
  echo "          *\n        _/ \\_\n       \\     /\n       /_/^\\_\\ \n        /",d()," ",d(),"\\ \n       /",d()," ",d(),d()," \\ \n      /",d(),d()," ",d()," ",d()," \\ \n     / ",d()," ",d(),d()," ",d()," ",d(),"\\ \n    /",d()," ",d()," ",d(),d()," ",d()," ",d()," \\ \n   /-------------\\ \n      [_______]\n       \\_____/\n"
  sleep(1)




Perl (496 bytes):

Code:
#!/usr/bin/perl
sub d() {
    $a=int(rand(7));
    @b=(".","O","C",".","+","<",".","I");
    $c=$b[$a];
    return $c;
}
while(1!=2){
system("clear");
print "          *\n        _/ \\_\n       \\     /\n       /_/^\\_\\ \n        /".d()." ".d()."\\ \n       /".d()." ".d().d()." \\ \n      /".d().d()." ".d()." ".d()." \\ \n     / ".d()." ".d().d()." ".d()." ".d()."\\ \n    /".d()." ".d()." ".d().d()." ".d()." ".d()." \\ \n   /-------------\\ \n      [_______]\n       \\_____/\n";
sleep(1);}




Ruby (386 bytes ):

Code:
a = [".","O","C",".","+","<",".","I","e"]
b = "          *\n        _/ \\_\n       \\     /\n       /_/^\\_\\ \n        /  d\\ \n       /q de \\ \n      /dd e q \\ \n     / d ed q d\\ \n    /d e qd e d \\ \n   /-------------\\ \n      [_______]\n       \\_____/\n"
while 1!=2 do
puts b.gsub("d", a[(rand() * 8).to_i]).gsub("e", a[(rand() * 7).to_i]).gsub("q", a[(rand() * 7).to_i])
end



Moonscript (345 bytes):

Code:
d = ->
   a={".","+","C",".","O","*"," "}
   b=math.random(1,7)
   c=a[b]
   return c

print("          *\n        _/ \\_\n       \\     /\n       /_/^\\_\\ \n        /",d(),"\\ \n       /",d(),d(),"\\ \n      /",d(),d(),d(),"\\ \n     /",d(),d(),d(),d(),"\\ \n    /",d(),d(),d(),d(),d(),"\\ \n   /-------------\\ \n      [_______]\n       \\_____/\n")




Swift (381 bytes):

Code:
func d() -> String {
    var a = [".","+","C",".","O","*"," "]
    let b = Int.random(in: 0..<7)
    return a[b]
}
print("          *\n        _/ \\_\n       \\     /\n       /_/^\\_\\ \n        /",d(),"\\ \n       /",d(),d(),"\\ \n      /",d(),d(),d(),"\\ \n     /",d(),d(),d(),d(),"\\ \n    /",d(),d(),d(),d(),d(),"\\ \n   /-------------\\ \n      [_______]\n       \\_____/\n")



bash (474 bytes):

Code:
for (( ;; ))
do
d () {
    a=$((RANDOM %= 8))
    b=("." "O" "C" "." "+" "<" "." "I")
    d=${b[$a]}
    echo $d
}
clear
echo "          *"
echo "        _/ \_"
echo "       \     /"
echo "       /_/^\_\ "
echo "        /$(d) $(d)\ "
echo "       /$(d) $(d)$(d) \ "
echo "      /$(d)$(d) $(d) $(d) \ "
echo "     / $(d) $(d)$(d) $(d) $(d)\ "
echo "    /$(d) $(d) $(d)$(d) $(d) $(d) \ "
echo "   /-------------\ "
echo "      [_______]"
echo "       \_____/"
sleep .5
done



squirrel (463 bytes):

Code:
function d(){
  local a = [".","+","C",".","O","*"," "];
  local b = rand()%7;
  return a[b];
}
srand(time());
while (1!=2) {
print("          *\n        _/ \\_\n       \\     /\n       /_/^\\_\\ \n        /"+d()+" "+d()+"\\ \n       /"+d()+" "+d()+d()+" \\ \n      /"+d()+d()+" "+d()+" "+d()+" \\ \n     / "+d()+" "+d()+d()+" "+d()+" "+d()+"\\ \n    /"+d()+" "+d()+" "+d()+d()+" "+d()+" "+d()+" \\ \n   /-------------\\ \n      [_______]\n       \\_____/\n");
}




pike (563 bytes):

Code:
string d(){
array(string) a;
a = ({".","O","C",".","+","<",".","I","e"});
return a[random(7)];}

int main()
{
    GTK.setup_gtk();
    GTK.Alert("          *\n        _/ \\_\n       \\     /\n       /_/^\\_\\ \n        /%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",d()," ",d(),"\\ \n       /",d()," ",d(),d()," \\ \n      /",d(),d()," ",d()," ",d()," \\ \n     / ",d()," ",d(),d()," ",d()," ",d(),"\\ \n    /",d()," ",d()," ",d(),d()," ",d()," ",d()," \\ \n   /-------------\\ \n      [_______]\n       \\_____/\n");
    return -1;
}




rust (551 bytes):

Code:
fn d() -> char{
    let a = ['.','+','C','.','O','*',' '];
    let b: usize = rand::random::<usize>()%7;
    return a[b];
}

fn main() {
    print!("          *\n        _/ \\_\n       \\     /\n       /_/^\\_\\ \n        /{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}",d()," ",d(),"\\ \n       /",d()," ",d(),d()," \\ \n      /",d(),d()," ",d()," ",d()," \\ \n     / ",d()," ",d(),d()," ",d()," ",d(),"\\ \n    /",d()," ",d()," ",d(),d()," ",d()," ",d()," \\ \n   /-------------\\ \n      [_______]\n       \\_____/\n");
}



eC (564 bytes):

Code:
import "ecere";
class A : Application
{
   char* d(){
   static char* a[] = {".","O","C",".","+","<",".","I"};
   char* b = a[random()%7];
   return b;
   }
   void Main()
   {
DateTime time;
srandom(time.GetLocalTime());
      Print("          *\n        _/ \\_\n       \\     /\n       /_/^\\_\\ \n        /",d()," ",d(),"\\ \n       /",d()," ",d(),d()," \\ \n      /",d(),d()," ",d()," ",d()," \\ \n     / ",d()," ",d(),d()," ",d()," ",d(),"\\ \n    /",d()," ",d()," ",d(),d()," ",d()," ",d()," \\ \n   /-------------\\ \n      [_______]\n       \\_____/\n");
   }
}



D (508 bytes):

Code:
import std.stdio;
import std.random;
auto d(){
auto rnd = Random(unpredictableSeed);
auto d  = [".","O","C",".","+","<",".","I"].choice(rnd);
return d;}
void main()
{
    write("          *\n        _/ \\_\n       \\     /\n       /_/^\\_\\ \n        /",d()," ",d(),"\\ \n       /",d()," ",d(),d()," \\ \n      /",d(),d()," ",d()," ",d()," \\ \n     / ",d()," ",d(),d()," ",d()," ",d(),"\\ \n    /",d()," ",d()," ",d(),d()," ",d()," ",d()," \\ \n   /-------------\\ \n      [_______]\n       \\_____/\n");
}




Fantom (488 bytes):

Code:
class Tree
{
  static Str d()
  {
    Str[] a:=[".","O","C",".","+","<",".","I","e"]
    return a[Int.random(0..6)]
  }
  static Void main()
  {
    echo("          *\n        _/ \\_\n       \\     /\n       /_/^\\_\\ \n        /"+d()+" "+d()+"\\ \n       /"+d()+" "+d()+d()+" \\ \n      /"+d()+d()+" "+d()+" "+d()+" \\ \n     / "+d()+" "+d()+d()+" "+d()+" "+d()+"\\ \n    /"+d()+" "+d()+" "+d()+d()+" "+d()+" "+d()+" \\ \n   /-------------\\ \n      [_______]\n       \\_____/\n")
  }
}



Haxe (566 bytes):

Code:
import Random;
class Main {

  static public function d():String {
    var a;
    var b;
    a = [".","O","C",".","+","<",".","I","e"];
    b = a[Random.int(0,6)];
    return b;
  }
  static public function main():Void {
    trace("          *\n        _/ \\_\n       \\     /\n       /_/^\\_\\ \n        /"+d()+" "+d()+"\\ \n       /"+d()+" "+d()+d()+" \\ \n      /"+d()+d()+" "+d()+" "+d()+" \\ \n     / "+d()+" "+d()+d()+" "+d()+" "+d()+"\\ \n    /"+d()+" "+d()+" "+d()+d()+" "+d()+" "+d()+" \\ \n   /-------------\\ \n      [_______]\n       \\_____/\n");
  }
}



Odin (637 bytes):

Code:
package main

import "core:fmt"
import "core:math/rand"
import "core:time"
d :: proc() -> string {
n := time.now();
seed := u64(time.diff({}, n));
state := rand.Rand{};
rand.init(&state, seed);
a := [8]string{".","O","C",".","+","<",".","I"};
return a[rand.uint32(&state)%7];
}

main :: proc() {
fmt.print("          *\n        _/ \\_\n       \\     /\n       /_/^\\_\\ \n        /",d()," ",d(),"\\ \n       /",d()," ",d(),d()," \\ \n      /",d(),d()," ",d()," ",d()," \\ \n     / ",d()," ",d(),d()," ",d()," ",d(),"\\ \n    /",d()," ",d()," ",d(),d()," ",d()," ",d()," \\ \n   /-------------\\ \n      [_______]\n       \\_____/\n");
}




The worst version possible in JavaScript (1505 bytes):

Code:
function deco(){
  p = Math.floor((Math.random() * 8) + 1);
  var dec=["&nbsp;","o","c","&nbsp;","*","<","&nbsp","I"];
  var d=dec[p];
  return d}
document.write("ERROR: CHRISTMAS TIME");
document.write(String.raw`<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_/&nbsp;\_ <br>
&nbsp;&nbsp;&nbsp;&nbsp;\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/ <br>
&nbsp;&nbsp;&nbsp;&nbsp;/_/^\_\ <br>`.fixed());
  a=String.raw`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/1 2\ <br>`;
  b=a.replace("1",deco());
  c=b.replace("2",deco());
  d=c.fixed();
  document.write(d);
  a=String.raw`&nbsp;&nbsp;&nbsp;&nbsp;/1 23 \ <br>`;
  b=a.replace("1",deco());
  c=b.replace("2",deco());
  d=c.replace("3",deco());
  e=d.fixed();
  document.write(e);
  a=String.raw`&nbsp;&nbsp;&nbsp;/12 3 4 \ <br>`;
  b=a.replace("1",deco());
  c=b.replace("2",deco());
  d=c.replace("3",deco());
  e=d.replace("4",deco());
  f=e.fixed();
  document.write(f);
  a=String.raw`&nbsp;&nbsp;/ 1 23 4 5\ <br>`;
  b=a.replace("1",deco());
  c=b.replace("2",deco());
  d=c.replace("3",deco());
  e=d.replace("4",deco());
  f=e.replace("5",deco());
  g=f.fixed();
  document.write(g);
  a=String.raw`&nbsp;/1 2 34 5 6 \ <br>`;
  b=a.replace("1",deco());
  c=b.replace("2",deco());
  d=c.replace("3",deco());
  e=d.replace("4",deco());
  f=e.replace("5",deco());
  g=f.replace("6",deco());
  h=g.fixed();
  document.write(h);
document.write(String.raw`/-------------\<br>&nbsp;&nbsp;&nbsp;[_____]<br>&nbsp;&nbsp;&nbsp;\_____/`.fixed());
Alternate solution for JS, 216 bytes abusing precedence- nice trick with String.raw

Code:

console.log(String.raw`       *
     _/ \_
    \     /
    /_/^\_\
     /ooo\
    /ooooo\
   /ooooooo\
  /ooooooooo\
 /ooooooooooo\
/-------------\
   [_______]
    \_____/`.replace(/o/g,x=>' o'[Math.random()<.3&1]))
TI-Basic (300 bytes)


Code:

()
Prgm
Disp "        *"
Disp "      _/ \_"
Disp "     \     / "
Disp "     /_/^\_\\"
Disp "      /"&char(rand(10)+65)&char(rand(10)+65)&char(rand(10)+65)*"\\"
Disp "     /+++++\\"
Disp "    /+++++++\\"
Disp "   /+++++++++\\"
Disp "  /+++++++++++\\"
Disp " /-------------\\"
Disp "    [-------]"
Disp "     \_____/"
EndPrgm


Note: 300 bytes is without the filename and after I ran the tokenizer on it.

Objective C:
335 bytes

Code:

#include <stdio.h>
#include <stdlib.h>
int main() {
    @autoreleasepool {
char *s = "       *\n     _/ \\_\n    \\     /\n    /_/^\\_\\\n     /eee\\\n    /eeeee\\\n   /eeeeeee\\\n  /eeeeeeeee\\\n /eeeeeeeeeee\\\n/-------------\\\n   [_______]\n    \\_____/";for(int i=0;i<200;i++)putc((s[i]=='e'?rand()%5+65:s[i]),stdout);}return 0;}
Lua:

(interesting version, 306 bytes assuming unix line endings)
Code:
w,s=io.write,function(a,n)i=1 while i<=#a do c,d=a:find("\n",i)w((" "):rep(n))w(a:sub(i,c))i=d+1 end end s([[   *
 _/ \_
\     /
/_/^\_\
]],8)for i=1,5 do w((" "):rep(10-i))w("/")for j=0,2*i do k=math.random(8)w(("     o*+"):sub(k,k))end w("\\\n")end w("    /-------------\\\n")s([[[_______]
 \_____/
]],7)


(boring version, but 280 bytes)

Code:
print((([[           *
         _/ \_
        \     /
        /_/^\_\
         /ooo\
        /ooooo\
       /ooooooo\
      /ooooooooo\
     /ooooooooooo\
    /-------------\
       [_______]
        \_____/]]):gsub("o",function()k=math.random(8)return("     o*+"):sub(k,k)end)))


Both need to be run on at least Lua 5.3 to have properly seeded random numbers. Older versions use the standard C math library random number generator which doesn't get seeded on start. You can test it out on https://www.lua.org/cgi-bin/demo if you don't feel like installing the interpreter.
I guess I have to throw in a little something too Razz
VBScript (271 Bytes)

Code:
t="       *n     _/ \_n    \     /n    /_/^\_\n     /ooo\n    /ooooo\n   /ooooooo\n  /ooooooooo\n /ooooooooooo\n/-------------\n   [_______]n    \_____/":t=Replace(t,"n",VbCr):Randomize:For i=1 To 25:s=Int((99)*Rnd+46):t=Mid(t,1,s-1)+Replace(t,"o"," ",s,1):Next:MsgBox(t)

I didn't tryhard golf but I also didn't not try

COBOL (lots of bytes)

Code:
IDENTIFICATION DIVISION.
PROGRAM-ID. X-MAS-TREE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 CUT-NUMBER PIC 9.9 VALUE 0.5.
01 RANDOM-NUMBER PIC 9.9 VALUE ZEROES.
01 WS-CNT-1 PIC 99.
01 WS-CNT-2 PIC 99.
01 WS-CNT-3 PIC 9.
01 WS-CNT-4 PIC 9 VALUE 5.
PROCEDURE DIVISION.
DISPLAY '        *'.
DISPLAY '      _/ \_'.
DISPLAY '     \     /'.
DISPLAY '     /_/^\_\'.
PERFORM VARYING WS-CNT-1 FROM 3 BY 2 UNTIL WS-CNT-1 IS GREATER THAN 11
    PERFORM VARYING WS-CNT-3 FROM WS-CNT-4 BY 1 UNTIL WS-CNT-3 EQUALS 1
        DISPLAY ' ' WITH NO ADVANCING
    END-PERFORM
    ADD 1 TO WS-CNT-4
    DISPLAY '/' WITH NO ADVANCING
    PERFORM VARYING WS-CNT-2 FROM 1 BY 1 UNTIL WS-CNT-2 IS GREATER THAN WS-CNT-1
        COMPUTE RANDOM-NUMBER = FUNCTION RANDOM
        IF RANDOM-NUMBER IS GREATER THAN OR EQUAL TO CUT-NUMBER THEN
            DISPLAY '*' WITH NO ADVANCING
            ELSE
            DISPLAY ' ' WITH NO ADVANCING
        END-IF
    END-PERFORM
    DISPLAY '\'
END-PERFORM
DISPLAY ' /-------------\'
DISPLAY '    [_______]'
DISPLAY '     \_____/'
STOP RUN.

And here's the result



PHP in a browser (235 bytes)

Code:
<?php echo preg_replace_callback('/o/',function(){return rand(0,1)?' ':'o';},'<pre>       *
     _/ \_
    \     /
    /_/^\_\
     /ooo\
    /ooooo\
   /ooooooo\
  /ooooooooo\
 /ooooooooooo\
/-------------\
   [_______]
    \_____/');


PHP 7.4+ in console (211 bytes)


Code:
<?echo preg_replace_callback('/o/',fn()=>rand()&1?' ':'o','       *
     _/ \_
    \     /
    /_/^\_\
     /ooo\
    /ooooo\
   /ooooooo\
  /ooooooooo\
 /ooooooooooo\
/-------------\
   [_______]
    \_____/');


MySQL (964 bytes) Laughing

Code:
DROP TABLE IF EXISTS `tree`;
CREATE TABLE IF NOT EXISTS `tree` (`val` varchar(20) NOT NULL);

DROP PROCEDURE IF EXISTS xmastree_db.tree_procedure;

delimiter //
CREATE PROCEDURE xmastree_db.tree_procedure()
wholeblock:BEGIN
  DECLARE str VARCHAR(255) DEFAULT '';
  DECLARE x INT;
  DECLARE y INT DEFAULT 3;
  DECLARE z INT;
  TRUNCATE TABLE tree;
  INSERT INTO tree(val) VALUES ("     _/ \\_"), ("    \\       /"), ("    /_/^\\_\\");
  WHILE y <= 11 DO
    SET x = 0;
    SET z = (11 - y) / 2 + 2;
    WHILE z > 0 DO
    SET str = CONCAT(str, " ");
    SET z = z-1;
    END WHILE;
    SET str = CONCAT(str, "/");
    WHILE x < y DO
      SET str = CONCAT(str, IF (RAND() < 0.5, "*", " "));
      SET x = x + 1;
    END WHILE;
  SET y = y + 2;
  INSERT INTO tree(val) VALUES (CONCAT(str, "\\")); 
  SET str = '';
  END WHILE;
  INSERT INTO tree(val) VALUES ("/-------------\\"), ("  [_______]"), ("    \\_____/");
  SELECT * FROM tree;
END

CALL tree_procedure();
I didn't even attempt to golf it, feel free to mess with it
TI-BASIC, 259 bytes. (I know it's probably not good lol)

Code:

"  π.
"sub(Ans,randInt(1,4),1→u
Output(1,6,"_/ \_
Output(2,5,"\     /
Output(3,5,"/     \
Output(4,6,"/"+u+u+u+"\
Output(5,5,"/"+u+u+u+u+u+"\
Output(6,4,"/"+u+u+u+u+u+u+u+"\
Output(7,3,"/"+u+u+u+u+u+u+u+u+u+"\
Output(8,2,"/---------\
Output(9,4,"[_______]
Output(10,5,"\_____/


ez80 (CE) Asm (2 unique ornaments) (had to cut out a line of the tree for this to fit on the homescreen)
336 bytes with looping and optimal visuals:

Code:

include 'include/ez80.inc'
include 'include/ti84pceg.inc'
include 'include/tiformat.inc'
format ti executable "HOLIDAYS"
   call ti.ClrScrnFull
   call ti.DrawStatusBar
tree_program:
   ld hl,tree_data
   ld de,ti.pixelShadow
   push de
   ld bc,tree_data.len
   ldir
   pop hl
   ld de,ornament_data
.loop:
   inc hl
   ld a,(hl)
   or a,a
   jq z,.done
   cp a,'O'
   jq nz,.loop
   ld a,($800001)
   and a,3
   add a,ornament_data and $FF
   ld e,a
   ld a,(de)
   ld (hl),a
   jq .loop
.next:
   ld (hl)," "
   jq .loop
.done:
   call ti.HomeUp
   ld hl,ti.pixelShadow
   call ti.PutS
   ld b,8
.keyloop:
   push bc
   call ti.GetCSC
   pop bc
   cp a,15
   ret z
   djnz .keyloop
   jq .
ornament_data:
   db "  .*"
tree_data:
   db "        _/*\_                    \     /                   /_/^\_\                    /OOO\                    /OOOOO\                  /OOOOOOO\                /OOOOOOOOO\              /-----------\               ",$C1,"_______]                  \_____/",0
.len:=$-.

311 bytes minimal:

Code:


include 'include/ez80.inc'
include 'include/ti84pceg.inc'
include 'include/tiformat.inc'
format ti executable "HOLIDAYS"

tree_program:
   ld hl,tree_data
   ld de,ti.pixelShadow
   push de
   ld bc,tree_data.len
   ldir
   pop hl
   ld de,ornament_data
   push hl
.loop:
   inc hl
   ld a,(hl)
   or a,a
   jq z,.done
   cp a,'O'
   jq nz,.loop
   ld a,($800001)
   and a,3
   add a,ornament_data and $FF
   ld e,a
   ld a,(de)
   ld (hl),a
   jq .loop
.next:
   ld (hl)," "
   jq .loop
.done:
   call ti.HomeUp
   pop hl
   jp ti.PutS
ornament_data:
   db "  .*"
tree_data:
   db "        _/*\_                    \     /                   /_/^\_\                    /OOO\                    /OOOOO\                  /OOOOOOO\                /OOOOOOOOO\              /-----------\               ",$C1,"_______]                  \_____/",0
.len:=$-.

Python, 304 bytes. EDIT: just noticed jacobly's submission, lol

Code:

import random
def p(s): print(s,end="")
n=3
for c in "7*,5_/ b,4b5/,4/_/^b_b,5/Ob,4/Ob,3/Ob,2/Ob,1/Ob,0/-------------b,3[_______],4b_____/,":
   if c==',': p("\n")
   elif 48<=ord(c)<=57: p(" "*int(c))
   elif c=="O":
      for i in range(n): p(chr(random.randint(65,90)))
      n+=2
   elif c=="b": p("\\")
   else: p(c)
Scratch 3, 2,086 bytes.

It's technically random, and has more than one ornament!
Oxiti8 wrote:
Scratch 3, 2,086 bytes


How exactly are you counting bytes in Scratch? The rules I'm familiar with involve converting to a separate language, then counting bytes in that.
Privacy_Dragon wrote:
The worst version possible in JavaScript (1505 bytes):

Code:
function deco(){
  p = Math.floor((Math.random() * 8) + 1);
  var dec=["&nbsp;","o","c","&nbsp;","*","<","&nbsp","I"];
  var d=dec[p];
  return d}
document.write("ERROR: CHRISTMAS TIME");
document.write(String.raw`<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_/&nbsp;\_ <br>
&nbsp;&nbsp;&nbsp;&nbsp;\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/ <br>
&nbsp;&nbsp;&nbsp;&nbsp;/_/^\_\ <br>`.fixed());
  a=String.raw`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/1 2\ <br>`;
  b=a.replace("1",deco());
  c=b.replace("2",deco());
  d=c.fixed();
  document.write(d);
  a=String.raw`&nbsp;&nbsp;&nbsp;&nbsp;/1 23 \ <br>`;
  b=a.replace("1",deco());
  c=b.replace("2",deco());
  d=c.replace("3",deco());
  e=d.fixed();
  document.write(e);
  a=String.raw`&nbsp;&nbsp;&nbsp;/12 3 4 \ <br>`;
  b=a.replace("1",deco());
  c=b.replace("2",deco());
  d=c.replace("3",deco());
  e=d.replace("4",deco());
  f=e.fixed();
  document.write(f);
  a=String.raw`&nbsp;&nbsp;/ 1 23 4 5\ <br>`;
  b=a.replace("1",deco());
  c=b.replace("2",deco());
  d=c.replace("3",deco());
  e=d.replace("4",deco());
  f=e.replace("5",deco());
  g=f.fixed();
  document.write(g);
  a=String.raw`&nbsp;/1 2 34 5 6 \ <br>`;
  b=a.replace("1",deco());
  c=b.replace("2",deco());
  d=c.replace("3",deco());
  e=d.replace("4",deco());
  f=e.replace("5",deco());
  g=f.replace("6",deco());
  h=g.fixed();
  document.write(h);
document.write(String.raw`/-------------\<br>&nbsp;&nbsp;&nbsp;[_____]<br>&nbsp;&nbsp;&nbsp;\_____/`.fixed());

mr womp womp wrote:
Privacy_Dragon wrote:
The worst version possible in JavaScript (1505 bytes):

Code:
function deco(){
  p = Math.floor((Math.random() * 8) + 1);
  var dec=["&nbsp;","o","c","&nbsp;","*","<","&nbsp","I"];
  var d=dec[p];
  return d}
document.write("ERROR: CHRISTMAS TIME");
document.write(String.raw`<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_/&nbsp;\_ <br>
&nbsp;&nbsp;&nbsp;&nbsp;\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/ <br>
&nbsp;&nbsp;&nbsp;&nbsp;/_/^\_\ <br>`.fixed());
  a=String.raw`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/1 2\ <br>`;
  b=a.replace("1",deco());
  c=b.replace("2",deco());
  d=c.fixed();
  document.write(d);
  a=String.raw`&nbsp;&nbsp;&nbsp;&nbsp;/1 23 \ <br>`;
  b=a.replace("1",deco());
  c=b.replace("2",deco());
  d=c.replace("3",deco());
  e=d.fixed();
  document.write(e);
  a=String.raw`&nbsp;&nbsp;&nbsp;/12 3 4 \ <br>`;
  b=a.replace("1",deco());
  c=b.replace("2",deco());
  d=c.replace("3",deco());
  e=d.replace("4",deco());
  f=e.fixed();
  document.write(f);
  a=String.raw`&nbsp;&nbsp;/ 1 23 4 5\ <br>`;
  b=a.replace("1",deco());
  c=b.replace("2",deco());
  d=c.replace("3",deco());
  e=d.replace("4",deco());
  f=e.replace("5",deco());
  g=f.fixed();
  document.write(g);
  a=String.raw`&nbsp;/1 2 34 5 6 \ <br>`;
  b=a.replace("1",deco());
  c=b.replace("2",deco());
  d=c.replace("3",deco());
  e=d.replace("4",deco());
  f=e.replace("5",deco());
  g=f.replace("6",deco());
  h=g.fixed();
  document.write(h);
document.write(String.raw`/-------------\<br>&nbsp;&nbsp;&nbsp;[_____]<br>&nbsp;&nbsp;&nbsp;\_____/`.fixed());


I just want to have the worst entry possible 😛
Python (6591 bytes, no quotation marks)

Code:
# bin/python

import random

while random:
   try:
      quite_possibly_a_tree = random.randbytes(random.randrange(1000)).decode(chr(117)+chr(116)+chr(102)+chr(45)+chr(56))
      if ord(quite_possibly_a_tree[0]) == 32 and ord(quite_possibly_a_tree[1]) == 32 and ord(quite_possibly_a_tree[2]) == 32 and ord(quite_possibly_a_tree[3]) == 32 and ord(quite_possibly_a_tree[4]) == 32 and ord(quite_possibly_a_tree[5]) == 32 and ord(quite_possibly_a_tree[6]) == 32 and ord(quite_possibly_a_tree[7]) == 42 and ord(quite_possibly_a_tree[8]) == 10 and ord(quite_possibly_a_tree[9]) == 32 and ord(quite_possibly_a_tree[10]) == 32 and ord(quite_possibly_a_tree[11]) == 32 and ord(quite_possibly_a_tree[12]) == 32 and ord(quite_possibly_a_tree[13]) == 32 and ord(quite_possibly_a_tree[14]) == 95 and ord(quite_possibly_a_tree[15]) == 47 and ord(quite_possibly_a_tree[16]) == 32 and ord(quite_possibly_a_tree[17]) == 92 and ord(quite_possibly_a_tree[18]) == 95 and ord(quite_possibly_a_tree[19]) == 10 and ord(quite_possibly_a_tree[20]) == 32 and ord(quite_possibly_a_tree[21]) == 32 and ord(quite_possibly_a_tree[22]) == 32 and ord(quite_possibly_a_tree[23]) == 32 and ord(quite_possibly_a_tree[24]) == 92 and ord(quite_possibly_a_tree[25]) == 32 and ord(quite_possibly_a_tree[26]) == 32 and ord(quite_possibly_a_tree[27]) == 32 and ord(quite_possibly_a_tree[28]) == 32 and ord(quite_possibly_a_tree[29]) == 32 and ord(quite_possibly_a_tree[30]) == 47 and ord(quite_possibly_a_tree[31]) == 10 and ord(quite_possibly_a_tree[32]) == 32 and ord(quite_possibly_a_tree[33]) == 32 and ord(quite_possibly_a_tree[34]) == 32 and ord(quite_possibly_a_tree[35]) == 32 and ord(quite_possibly_a_tree[36]) == 47 and ord(quite_possibly_a_tree[37]) == 95 and ord(quite_possibly_a_tree[38]) == 47 and ord(quite_possibly_a_tree[39]) == 94 and ord(quite_possibly_a_tree[40]) == 92 and ord(quite_possibly_a_tree[41]) == 95 and ord(quite_possibly_a_tree[42]) == 92 and ord(quite_possibly_a_tree[43]) == 10 and ord(quite_possibly_a_tree[44]) == 32 and ord(quite_possibly_a_tree[45]) == 32 and ord(quite_possibly_a_tree[46]) == 32 and ord(quite_possibly_a_tree[47]) == 32 and ord(quite_possibly_a_tree[48]) == 32 and ord(quite_possibly_a_tree[49]) == 47 and ord(quite_possibly_a_tree[53]) == 92 and ord(quite_possibly_a_tree[54]) == 10 and ord(quite_possibly_a_tree[55]) == 32 and ord(quite_possibly_a_tree[56]) == 32 and ord(quite_possibly_a_tree[57]) == 32 and ord(quite_possibly_a_tree[58]) == 32 and ord(quite_possibly_a_tree[59]) == 47 and ord(quite_possibly_a_tree[65]) == 92 and ord(quite_possibly_a_tree[66]) == 10 and ord(quite_possibly_a_tree[67]) == 32 and ord(quite_possibly_a_tree[68]) == 32 and ord(quite_possibly_a_tree[69]) == 32 and ord(quite_possibly_a_tree[70]) == 47 and ord(quite_possibly_a_tree[78]) == 92 and ord(quite_possibly_a_tree[79]) == 10 and ord(quite_possibly_a_tree[80]) == 32 and ord(quite_possibly_a_tree[81]) == 32 and ord(quite_possibly_a_tree[82]) == 47 and ord(quite_possibly_a_tree[92]) == 92 and ord(quite_possibly_a_tree[93]) == 10 and ord(quite_possibly_a_tree[94]) == 32 and ord(quite_possibly_a_tree[95]) == 47 and ord(quite_possibly_a_tree[107]) == 92 and ord(quite_possibly_a_tree[108]) == 10 and ord(quite_possibly_a_tree[109]) == 47 and ord(quite_possibly_a_tree[110]) == 45 and ord(quite_possibly_a_tree[111]) == 45 and ord(quite_possibly_a_tree[112]) == 45 and ord(quite_possibly_a_tree[113]) == 45 and ord(quite_possibly_a_tree[114]) == 45 and ord(quite_possibly_a_tree[115]) == 45 and ord(quite_possibly_a_tree[116]) == 45 and ord(quite_possibly_a_tree[117]) == 45 and ord(quite_possibly_a_tree[118]) == 45 and ord(quite_possibly_a_tree[119]) == 45 and ord(quite_possibly_a_tree[120]) == 45 and ord(quite_possibly_a_tree[121]) == 45 and ord(quite_possibly_a_tree[122]) == 45 and ord(quite_possibly_a_tree[123]) == 92 and ord(quite_possibly_a_tree[124]) == 10 and ord(quite_possibly_a_tree[125]) == 32 and ord(quite_possibly_a_tree[126]) == 32 and ord(quite_possibly_a_tree[127]) == 32 and ord(quite_possibly_a_tree[128]) == 91 and ord(quite_possibly_a_tree[129]) == 95 and ord(quite_possibly_a_tree[130]) == 95 and ord(quite_possibly_a_tree[131]) == 95 and ord(quite_possibly_a_tree[132]) == 95 and ord(quite_possibly_a_tree[133]) == 95 and ord(quite_possibly_a_tree[134]) == 95 and ord(quite_possibly_a_tree[135]) == 95 and ord(quite_possibly_a_tree[136]) == 93 and ord(quite_possibly_a_tree[137]) == 10 and ord(quite_possibly_a_tree[138]) == 32 and ord(quite_possibly_a_tree[139]) == 32 and ord(quite_possibly_a_tree[140]) == 32 and ord(quite_possibly_a_tree[141]) == 32 and ord(quite_possibly_a_tree[142]) == 92 and ord(quite_possibly_a_tree[143]) == 95 and ord(quite_possibly_a_tree[144]) == 95 and ord(quite_possibly_a_tree[145]) == 95 and ord(quite_possibly_a_tree[146]) == 95 and ord(quite_possibly_a_tree[147]) == 95 and ord(quite_possibly_a_tree[148]) == 47 and quite_possibly_a_tree[50].isprintable() and quite_possibly_a_tree[51].isprintable() and quite_possibly_a_tree[52].isprintable() and quite_possibly_a_tree[60].isprintable() and quite_possibly_a_tree[61].isprintable() and quite_possibly_a_tree[62].isprintable() and quite_possibly_a_tree[63].isprintable() and quite_possibly_a_tree[64].isprintable() and quite_possibly_a_tree[71].isprintable() and quite_possibly_a_tree[72].isprintable() and quite_possibly_a_tree[73].isprintable() and quite_possibly_a_tree[74].isprintable() and quite_possibly_a_tree[75].isprintable() and quite_possibly_a_tree[76].isprintable() and quite_possibly_a_tree[77].isprintable() and quite_possibly_a_tree[83].isprintable() and quite_possibly_a_tree[84].isprintable() and quite_possibly_a_tree[85].isprintable() and quite_possibly_a_tree[86].isprintable() and quite_possibly_a_tree[87].isprintable() and quite_possibly_a_tree[88].isprintable() and quite_possibly_a_tree[89].isprintable() and quite_possibly_a_tree[90].isprintable() and quite_possibly_a_tree[91].isprintable() and quite_possibly_a_tree[96].isprintable() and quite_possibly_a_tree[97].isprintable() and quite_possibly_a_tree[98].isprintable() and quite_possibly_a_tree[99].isprintable() and quite_possibly_a_tree[100].isprintable() and quite_possibly_a_tree[101].isprintable() and quite_possibly_a_tree[102].isprintable() and quite_possibly_a_tree[103].isprintable() and quite_possibly_a_tree[104].isprintable() and quite_possibly_a_tree[105].isprintable() and quite_possibly_a_tree[106].isprintable() and len(quite_possibly_a_tree) <= 149:
         print(quite_possibly_a_tree)
         break
   except Exception as useless_noise:
      0 # stupid IndentationError
      #print(useless_noise)
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 2
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement