I just tried your code on my setup, and it works fine. (My pin assignments to segments are different than yours so I don't get the 8 numbers, I get different segments lighting up, but that's not a problem.)
You do not need to change anything in your code. Wire the segments like I said above, using 220 or 200 ohm resistors for each segment and the common to GROUND, and it should work.
(Sorry, I think you will need to change your code a little bit, instead of writing LOW to a pin to turn a segment on , you need to write HIGH to the pin to turn it on.)
Here's my random number generator code if you want to play with it. Note that my pin assignments > segments are different than yours, and also see how I've implemented the different numbers using "if" statements rather than functions.
// TKsNew7Seg Random Number Generator
int randno = 0;
void setup() {
pinMode(7, OUTPUT); // segment a
pinMode(6, OUTPUT); // segment b
pinMode(12, OUTPUT); // segment c
pinMode(11, OUTPUT); // segment d
pinMode(10, OUTPUT); // segment e
pinMode(8, OUTPUT); // segment f
pinMode(9, OUTPUT); // segment g
pinMode(A0, OUTPUT); // segment dot
digitalWrite(A0, 0); // start with the "dot" off
randomSeed(analogRead(A4));
}
void loop() {
randno = random(0,10);
// write '9'
if (randno == 9) {
digitalWrite(7, 1);
digitalWrite(6, 1);
digitalWrite(12, 1);
digitalWrite(11, 0);
digitalWrite(10, 0);
digitalWrite(8, 1);
digitalWrite(9, 1);
delay(1000);
}
if (randno == 8) {
// write '8'
digitalWrite(7, 1);
digitalWrite(6, 1);
digitalWrite(12, 1);
digitalWrite(11, 1);
digitalWrite(10, 1);
digitalWrite(8, 1);
digitalWrite(9, 1);
delay(1000);
}
if (randno == 7) {
// write '7'
digitalWrite(7, 1);
digitalWrite(6, 1);
digitalWrite(12, 1);
digitalWrite(11, 0);
digitalWrite(10, 0);
digitalWrite(8, 0);
digitalWrite(9, 0);
delay(1000);
}
if (randno == 6) {
// write '6'
digitalWrite(7, 1);
digitalWrite(6, 0);
digitalWrite(12, 1);
digitalWrite(11, 1);
digitalWrite(10, 1);
digitalWrite(8, 1);
digitalWrite(9, 1);
delay(1000);
}
if (randno == 5) {
// write '5'
digitalWrite(7, 1);
digitalWrite(6, 0);
digitalWrite(12, 1);
digitalWrite(11, 1);
digitalWrite(10, 0);
digitalWrite(8, 1);
digitalWrite(9, 1);
delay(1000);
}
if (randno == 4) {
// write '4'
digitalWrite(7, 0);
digitalWrite(6, 1);
digitalWrite(12, 1);
digitalWrite(11, 0);
digitalWrite(10, 0);
digitalWrite(8, 1);
digitalWrite(9, 1);
delay(1000);
}
if (randno == 3) {
// write '3'
digitalWrite(7, 1);
digitalWrite(6, 1);
digitalWrite(12, 1);
digitalWrite(11, 1);
digitalWrite(10, 0);
digitalWrite(8, 0);
digitalWrite(9, 1);
delay(1000);
}
if (randno == 2) {
// write '2'
digitalWrite(7, 1);
digitalWrite(6, 1);
digitalWrite(12, 0);
digitalWrite(11, 1);
digitalWrite(10, 1);
digitalWrite(8, 0);
digitalWrite(9, 1);
delay(1000);
}
if (randno == 1) {
// write '1'
digitalWrite(7, 0);
digitalWrite(6, 1);
digitalWrite(12, 1);
digitalWrite(11, 0);
digitalWrite(10, 0);
digitalWrite(8, 0);
digitalWrite(9, 0);
delay(1000);
}
if (randno == 0) {
// write '0'
digitalWrite(7, 1);
digitalWrite(6, 1);
digitalWrite(12, 1);
digitalWrite(11, 1);
digitalWrite(10, 1);
digitalWrite(8, 1);
digitalWrite(9, 0);
delay(1000);
}
digitalWrite(7, 0);
digitalWrite(6, 0);
digitalWrite(12, 0);
digitalWrite(11, 0);
digitalWrite(10, 0);
digitalWrite(8, 0);
digitalWrite(9, 0);
delay(100);
while (randno > 0, randno--) {
digitalWrite (A0, HIGH);
delay (100);
digitalWrite (A0, LOW);
delay(100);
}
}