Exemplo n.º 1
0
async def quantumrolls(client, message):
    dice = message.content[13:]
    if re.match("[0-9]+d[0-9]+", dice):
        die = int(dice[0:dice.find("d")])
        sides = int(dice[dice.find("d") + 1:])
        if die > 20:
            response = "Cannot roll more than 20 die at a time."
            await message.channel.send(response.format(message))
        elif sides > 100 or sides < 1:
            response = "Sides cannot be greater than 100."
            await message.channel.send(response.format(message))
        else:
            total = 0
            rollstr = ""
            qrolls = quantumrandom.get_data(data_type='uint16',
                                            array_length=die)
            maxrand = math.floor(65535 / sides) * sides
            rolls = []
            for roll in qrolls:
                while roll > maxrand:
                    roll = quantumrandom.get_data()[0]
                i = roll % sides
                if i == 0:
                    i = sides
                rolls.append(i)
                total = total + i
                rollstr = rollstr + ", " + str(i)
            response = "You rolled a total of " + str(
                total) + " {0.author.mention}: (" + rollstr[2:] + ")"
            await message.channel.send(response.format(message))
        return
    else:
        response = "Unrecognised die format. Use `{{n}}d{{s}}`. For example 2d6 or 1d3."
        await message.channel.send(response.format(message))
        return
Exemplo n.º 2
0
    def __init__(self, playerNumber, n, strat):
        self.id = playerNumber
        self.strat = strat
        self.randArr = quantumrandom.get_data(array_length = n)
        self.entropyArr = quantumrandom.get_data(array_length = n)
        self.choice = -1
        self.years = 0
        self.minYears = 0
        self.entropyInvoked = 0

        self.tribalThreshold = 0.8
Exemplo n.º 3
0
def main_generate_location(start_lat, start_lon, radius, num_points):

    if num_points % 1024 != 0:
        print("ERROR: num_points must be divisible by 1024")
        return

    numbers = []
    for i, x in enumerate(range(int(num_points / 1024))):
        x += 1
        print(
            f"Getting {1024*x} random unsigned 16-bit integers from QRNG...",
            end=" ",
        )
        print(f"({1024*x}/{num_points})", end="\r")
        numbers.extend(
            quantumrandom.get_data(data_type="uint16",
                                   array_length=1024,
                                   block_size=1))

    print("\nConverting integers to coordinates...")
    coord_list = []
    # Iterate over numbers from QRNG in pairs and convert them to coordinates
    for v, w in pairwise(numbers):
        v = int_to_float(v)
        w = int_to_float(w)

        longitude, latitude = random_location(start_lat, start_lon, radius, v,
                                              w)

        coord_list.append([longitude, latitude])

    # Create DataFrame from list of coordinates
    df = pd.DataFrame(coord_list, columns=["longitude", "latitude"])

    x_data = df.latitude
    y_data = df.longitude

    print("Calculating gaussian kernel density estimate...")
    kernel = stats.gaussian_kde(np.vstack([x_data, y_data]),
                                bw_method="silverman")

    # define grid.
    xmin, xmax = min(x_data), max(x_data)
    ymin, ymax = min(y_data), max(y_data)
    x, y = np.mgrid[xmin:xmax:100j, ymin:ymax:100j]
    positions = np.vstack([x.ravel(), y.ravel()])

    k_pos = kernel(positions)

    max_dense_lat, max_dense_lon = positions.T[np.argmax(k_pos)]

    print(f"KDE cordinates: {max_dense_lat}, {max_dense_lon}")
    return max_dense_lon, max_dense_lat, radius, num_points
def generate_random_gaussians(sample_size, ndists, verbose=True):
    if verbose:
        print('Drawing {} random samples (n={}) from Gaussian'.format(
            ndists, sample_size))
    d = defaultdict(list)
    for i in range(ndists):
        # we even seed with a quantum random number generator!
        seed = quantumrandom.get_data()
        np.random.seed(seed)
        x = np.random.normal(size=sample_size)
        for j in range(21):
            d['i'].append(i)
            d['x'].append(x[j])
    return pd.DataFrame(d)
Exemplo n.º 5
0
def create_random_numbers(minimum, maximum, n):  # type: (int, int, int) -> [int]
    whole, prev = frozenset(), frozenset()
    while len(whole) < n:
        whole = reduce(
            frozenset.union,
            (
                frozenset(
                    map(
                        lambda num: minimum + (num % maximum),
                        quantumrandom.get_data(data_type="uint16", array_length=1024),
                    )
                ),
                prev,
            ),
        )
        prev = whole
        print(len(whole), "of", n)
    return sample(whole, n)
Exemplo n.º 6
0
def qrandom(n):
  """
  Creates an array of n true random numbers obtained from the quantum random
  number generator at qrng.anu.edu.au

  This function requires the package quantumrandom and an internet connection.

  Args:
    n (int):
      length of the random array

  Return:
    array of ints:
      array of truly random unsigned 16 bit int values
  """
  import quantumrandom
  return np.concatenate([
    quantumrandom.get_data(data_type='uint16', array_length=1024)
    for i in range(int(np.ceil(n/1024.0)))
  ])[:n]
Exemplo n.º 7
0
def qrandom(n):
    """
  Creates an array of n true random numbers obtained from the quantum random
  number generator at qrng.anu.edu.au

  This function requires the package quantumrandom and an internet connection.

  Args:
    n (int):
      length of the random array

  Return:
    array of ints:
      array of truly random unsigned 16 bit int values
  """
    import quantumrandom
    return np.concatenate([
        quantumrandom.get_data(data_type='uint16', array_length=1024)
        for i in range(int(np.ceil(n / 1024.0)))
    ])[:n]
Exemplo n.º 8
0
def quantum_generator(n, d, mode=1):
    tg = time()
    a = []
    if mode:
        file = open("quantum.txt", 'a')
        print(' ', file=file)
    else:
        with open("quantum.txt", 'r') as file:
            strfile = file.read().replace("\n", " ")
            a = list(map(int, strfile.split()))
            file.close()
            return a
    while len(a) < n:
        a += list(
            map(lambda x: x % (d + 1),
                get_data(data_type='uint16', array_length=1024)))
        print(*a[-1024:], file=file, end=" ")
        print(len(a) / n * 100, '%')
    print('time: ', round(time() - tg, 3))
    file.close()
    return a
def new_game_grid(l, bomb_no=20):
    game_grid = [[TileItems.BLANKS for i in range(l)] for j in range(l)]

    # construct groups of numbers for tiles
    _cur = 0
    _index = [
        TileItems.GROUP1, TileItems.GROUP2, TileItems.GROUP3, TileItems.GROUP4,
        TileItems.GROUP5, TileItems.GROUP6
    ]
    random.shuffle(_index)
    _groups = [[random.randint(0, 1) for i in range(l)] for i in range(l)]

    for y in range(0, l, 4):
        for x in range(0, l, 6):
            for _y in range(y, y + 4):
                for _x in range(x, x + 6):
                    if _groups[_y][_x] >= 1:
                        game_grid[_y][_x] = _index[_cur]
            _cur += 1

    # ANU quantum random number generator to generate 20 bomb positions
    bomb_xy = qr.get_data(data_type='uint16', array_length=bomb_no * 2)
    bomb_xy = list(map(lambda x: x % l, bomb_xy))
    # classical random number generator for debugging
    # bomb_xy = [random.randint(0, l-1) for i in range(bomb_no * 2)]
    bomb_xy = [bomb_xy[i:i + 2] for i in range(0, bomb_no * 2, 2)]

    for coord in bomb_xy:
        if len(coord) > 0:
            game_grid[coord[0]][coord[1]] = TileItems.BOMB_UNEXPLODED

    # golden Cat
    game_grid[random.randint(0, l - 1)][random.randint(
        0, l - 1)] = TileItems.GOLDEN_CAT

    return game_grid
Exemplo n.º 10
0
 def test_ensure_bytestrings(self):
     data = quantumrandom.get_data('hex16', 1, 1)
     assert type(data[0]) is str, data
Exemplo n.º 11
0
 def test_uint16_json_api_invalid_type(self):
     try:
         data = quantumrandom.get_data('binary', 1, 1)
         assert False, "Invalid type didn't throw exception: %s" % data
     except:
         pass
Exemplo n.º 12
0
 def test_uint16_json_api_large_blocksize(self):
     try:
         data = quantumrandom.get_data('uint16', 1, 101)
         assert False, "Invalid block size didn't cause error: %s" % data
     except:
         pass
Exemplo n.º 13
0
 def test_uint16_json_api_long_array(self):
     try:
         data = quantumrandom.get_data('uint16', 101, 1)
         assert False, "Invalid array length didn't cause error: %s" % data
     except:
         pass
Exemplo n.º 14
0
 def test_hex16_json_api(self):
     data = quantumrandom.get_data('hex16', 1, 1)
     assert len(data) == 1
     for h in data[0]:
         assert h in '0123456789abcdef', h
Exemplo n.º 15
0
 def test_uint16_json_api(self):
     data = quantumrandom.get_data('uint16', 1, 1)
     assert len(data) == 1
     for i in str(data[0]):
         assert i in '0123456789', i
Exemplo n.º 16
0
 def test_uint16_json_api_max_array(self):
     data = quantumrandom.get_data('uint16', 100, 100)
     assert len(data) == 100
Exemplo n.º 17
0
    def _update(self):
        if not self.queryMade:
            self.randomhexnum = str(
                quantumrandom.get_data(data_type='hex16',
                                       array_length=1,
                                       block_size=198))
            self.queryMade = True
        sliceNum = self.randomhexnum[self.sliceIndex:self.sliceIndex + 6]
        if "'" not in sliceNum:
            self.new_label = QtWidgets.QLabel(self.gridLayoutWidget)
            self.gridLayout.addWidget(self.new_label, self.grid_row,
                                      self.grid_column, 1, 1)
            if self.grid_column > 21:
                self.grid_column = 0
                self.grid_row += 1
            else:
                self.grid_column += 1

            if len(sliceNum) == 6:
                self.new_label.setText(
                    self._translate(
                        "Dialog",
                        "<html><head/><body><p><span style=\" color:#" +
                        sliceNum + ";\">█</span></p></body></html>"))
                rgb_vector = get_rgb_vector(sliceNum)
                distance = euclidian_distance(rgb_vector,
                                              self.favoriteColorRGB)
                self.average_distance(distance)
                print(str(self.NumColorsGenerated) + " colors generated.")
                self.label_2.setText(
                    str(round(self.runningAverage, 2)) + " Euclidian Average")
                self.ax.cla()
                self.ax.axhspan(422, 426, 0, 1, color=('b'))
                self.ax.set_xlabel('Num Colors Generated')
                self.ax.set_ylabel("Distance from Blue")
                self.ax2.set_title('Colors generated')
                #self.ax.axhspan(380,423,0,1,color=('xkcd:greeny yellow'))
                #self.ax.axhspan(425,460,0,1,color=('xkcd:black'))
                self.ax.plot(self.averages[-(int((len(self.averages)) - 3)):],
                             'r.-')
                colorInt = int(sliceNum, 16)
                self.colorDistances.append(distance)
                self.ax2.scatter(colorInt, distance, c=("#" + sliceNum))
                self.canvas.draw()
                self.canvas2.draw()

                print("euclidian distance of " + str(round(distance, 2)))
                print("running average = " +
                      str(round(self.runningAverage, 2)))
                print("=============================")
                self.sliceIndex += 1
        else:
            self.timer.stop()
            self.label_2.setText("calculating statistics from this run....")
            self.calculate_variance()
            self.calculate_p_value()
            p_value = str(round(self.pValue, 3))
            self.append_human_results()
            global_p_value = str(round(self.global_p_value, 5))
            if (self.pValue > .05):
                self.label_2.setText(
                    self._translate(
                        "Dialog",
                        "<html><head/><body><p><span style=\" color: red;\"> p value of "
                        + p_value +
                        ". (Null hypothesis supported.)</span></p></body></html>"
                    ))
            else:
                self.label_2.setText(
                    self._translate(
                        "Dialog",
                        "<html><head/><body><p><span style=\" color: green;\"> p value of "
                        + p_value +
                        ". (Psi hypothesis supported.)</span></p></body></html>"
                    ))
            if (self.global_p_value > .05):
                self.label_3.setText(
                    self._translate(
                        "Dialog",
                        "<html><head/><body><p><span style=\" color: red;\"> global p value of "
                        + global_p_value +
                        ". (null evident.)</span></p></body></html>"))
            else:
                self.label_3.setText(
                    self._translate(
                        "Dialog",
                        "<html><head/><body><p><span style=\" color: green;\"> global p value of "
                        + global_p_value +
                        ". (psi evident!!)</span></p></body></html>"))
            global_average = str(round(self.global_average, 2))
            if (self.global_average > 424):
                self.label_4.setText(
                    self._translate(
                        "Dialog",
                        "<html><head/><body><p><span style=\" color: red;\"> cumulative average distance of "
                        + global_average +
                        ". <br />(Farther from blue than control.) </span></p></body></html>"
                    ))
            else:
                self.label_4.setText(
                    self._translate(
                        "Dialog",
                        "<html><head/><body><p><span style=\" color: green;\"> cumulative average distance of "
                        + global_average +
                        ". <br />(Closer to blue than control.) </span></p></body></html>"
                    ))

            self.queryMade = False
            self.pushButton.setText("continue?")
            self.pushButton.setEnabled(True)
Exemplo n.º 18
0
 def getQuantumRandomSeed(self):
     return quantumrandom.get_data()
Exemplo n.º 19
0
 def test_uint16_json_api_long_array(self):
     try:
         data = quantumrandom.get_data('uint16', 101, 1)
         assert False, "Invalid array length didn't cause error: %s" % data
     except:
         pass
Exemplo n.º 20
0
 def test_uint16_json_api_large_blocksize(self):
     try:
         data = quantumrandom.get_data('uint16', 1, 101)
         assert False, "Invalid block size didn't cause error: %s" % data
     except:
         pass
Exemplo n.º 21
0
 def test_uint16_json_api_invalid_type(self):
     try:
         data = quantumrandom.get_data('binary', 1, 1)
         assert False, "Invalid type didn't throw exception: %s" % data
     except:
         pass
Exemplo n.º 22
0
def few_numbers():
    return quantumrandom.get_data(data_type='uint16', array_length=5)
Exemplo n.º 23
0
 def test_uint16_json_api(self):
     data = quantumrandom.get_data('uint16', 1, 1)
     assert len(data) == 1
     for i in str(data[0]):
         assert i in '0123456789', i
Exemplo n.º 24
0
 def test_hex16_json_api(self):
     data = quantumrandom.get_data('hex16', 1, 1)
     assert len(data) == 1
     for h in data[0]:
         assert h in '0123456789abcdef', h
Exemplo n.º 25
0
 def test_uint16_json_api_max_array(self):
     data = quantumrandom.get_data('uint16', 100, 100)
     assert len(data) == 100
Exemplo n.º 26
0
 def get_values(self):
     """
     Get an array of 1000 random numbers from the server
     """
     self.rns = quantumrandom.get_data(data_type='uint16', array_length=1000)
Exemplo n.º 27
0
 def test_ensure_bytestrings(self):
     data = quantumrandom.get_data('hex16', 1, 1)
     assert type(data[0]) is str, data