Skip to content

Instantly share code, notes, and snippets.

@lunandd
Last active September 1, 2022 14:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lunandd/e4202f52bcdac4bf49dd1005c3c62f70 to your computer and use it in GitHub Desktop.
Save lunandd/e4202f52bcdac4bf49dd1005c3c62f70 to your computer and use it in GitHub Desktop.
const device_pins = [
AnalogPin.P0,
AnalogPin.P1,
AnalogPin.P2,
AnalogPin.P3,
AnalogPin.P4,
AnalogPin.P5,
AnalogPin.P6,
AnalogPin.P7,
AnalogPin.P8,
AnalogPin.P9,
AnalogPin.P10,
AnalogPin.P11,
AnalogPin.P12,
AnalogPin.P13,
AnalogPin.P14,
AnalogPin.P15,
AnalogPin.P16,
AnalogPin.P19,
AnalogPin.P20,
];
const xorshift32 = (seed: number): number => {
let x = seed;
x ^= x << 13;
x ^= x >> 17;
x ^= x << 5;
return x;
};
const gen_random = (maxLength?: number): number => {
const temp = input.temperature();
const time = input.runningTimeMicros();
const average_of_pin_values =
device_pins
.map((p) => pins.analogReadPin(p))
.reduce((a: number, b: number) => a + b, 0) / device_pins.length;
const generated = xorshift32(time + xorshift32(average_of_pin_values) + xorshift32(temp));
return typeof maxLength !== "undefined"
? parseInt(generated.toString().slice(0, maxLength)) >> maxLength
: generated;
};
basic.forever(() => {
serial.writeValue("length_2", gen_random(2));
serial.writeValue("length_undefined", gen_random());
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment