Skip to content

Instantly share code, notes, and snippets.

View mdipirro's full-sized avatar

Matteo Di Pirro mdipirro

  • Padua, Italy
View GitHub Profile
@mdipirro
mdipirro / random_number.qs
Created October 17, 2025 09:38
Random number generation with Q#
// GenerateRandomBit as before
operation GenerateRandomNumberInRange(max: Int): Int {
mutable bits = [];
let nBits = BitSizeI(max);
for idxBit in 1..nBits {
bits += [GenerateRandomBit()];
}
let sample = ResultArrayAsInt(bits);
@mdipirro
mdipirro / random_bit.qs
Created October 17, 2025 09:36
Random bit generation in Q#
operation GenerateRandomBit() : Result {
use q = Qubit();
H(q);
let result = M(q);
Reset(q);
return result;
}
@mdipirro
mdipirro / cirq_random.py
Created October 17, 2025 09:35
Random number generation in Cirq
simulator = cirq.Simulator()
def quantum_random_number_generator(nbits):
qubit = cirq.LineQubit(0)
circuit = cirq.Circuit(cirq.H(qubit), cirq.measure(qubit))
simulation_result = simulator.run(circuit, repetitions=nbits)
measurements = simulation_result.measurements["q(0)"]
bits = ''.join([str(m) for m in measurements.flatten()])
number = int(bits, 2)
print("Generated random number: ", bits, " -> ", number)
@mdipirro
mdipirro / qiskit_random.py
Created October 17, 2025 09:35
Random number generation in Qiskit with max
# quantum_random_number_generator as before
def generate_number(max):
nbits = math.floor(math.log(max) / math.log(2)) + 1
while True:
number = quantum_random_number_generator(nbits)
if number < max:
return number
@mdipirro
mdipirro / qiskit_random.py
Created October 17, 2025 09:33
Qiskit random number generation
simulator = AerSimulator()
def quantum_random_number_generator(nbits):
qc = QuantumCircuit(1, 1) # One qubit and one classical bit
qc.h(0)
qc.measure(0, 0) # Measure the qubit and store the result in the classical bit
job = simulator.run(qc, shots=nbits, memory=True)
simulation_result = job.result()
measurements = simulation_result.get_memory()
bits = ''.join([str(m) for m in measurements])
@mdipirro
mdipirro / QuantumNumberGenerator.scala
Created October 17, 2025 09:32
Quantum random number generator
class QuantumNumberGenerator:
// code shown before
private def generateNumberWithNBits(n: Int): Long =
(1 to n).foldLeft(0L) { case (acc, _) =>
val bit = quantumRandomBitGeneration()
// shift the accumulator left by 1 position and add the new random bit to the least significant position
(acc << 1) | bit
}
@mdipirro
mdipirro / QuantumNumberGenerator.scala
Created October 17, 2025 09:31
Scala Quantum Random Bit Generation
class QuantumNumberGenerator:
private val simulator = SimpleQuantumExecutionEnvironment()
private val program = Program(1, Step(Hadamard(0)))
private def quantumRandomBitGeneration(): Int =
val qubits = simulator.runProgram(program).getQubits
qubits(0).measure()
@mdipirro
mdipirro / FlywayMigrator.scala
Last active September 30, 2020 10:57
This gist contains a simple implementation of a Flyway migrator object in Scala
import org.flywaydb.core.Flyway
import scala.jdk.CollectionConverters._
object FlywayMigrator {
def migrate(): Unit = {
val retries: Int = ???
val eventsSchema: String = ???
val defaultSchema: String = ???
val placeholders: Map[String, String] = Map(
@mdipirro
mdipirro / Akka-Persistence-JDBC-User.sql
Created September 30, 2020 09:25
This gist contains a Flyway migration to create a user working on the tables required by Akka Persistence JDBC
CREATE USER IF NOT EXISTS `${user}`@`%` IDENTIFIED BY '${password}';
GRANT Insert, Select ON `${event_schema}`.* TO `${user}`;
@mdipirro
mdipirro / Akka-Persistence-JDBC-MySQL-Tables.sql
Created September 30, 2020 09:17
This gist contains the tables required by Akka Persistence JDBC on MySQL-based DBMSes.
USE `${event_schema}`;
DROP TABLE IF EXISTS journal;
CREATE TABLE IF NOT EXISTS journal (
ordering SERIAL,
persistence_id VARCHAR(255) NOT NULL,
sequence_number BIGINT NOT NULL,
deleted BOOLEAN DEFAULT FALSE NOT NULL,
tags VARCHAR(255) DEFAULT NULL,