diff --git a/.travis.yml b/.travis.yml
index b574b4e..43f50ee 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -37,3 +37,4 @@ script:
   - buildExampleSketch LoRaSenderNonBlocking
   - buildExampleSketch LoRaSetSpread
   - buildExampleSketch LoRaSetSyncWord
+  - buildExampleSketch LoRandom
diff --git a/API.md b/API.md
index 2d86815..fc712b3 100644
--- a/API.md
+++ b/API.md
@@ -366,6 +366,14 @@ LoRa.disableInvertIQ();
 
 ## Other functions
 
+### beginRandom
+
+Initializes the random number generator.
+
+```
+LoRa.beginRandom();
+```
+
 ### Random
 
 Generate a random byte, based on the Wideband RSSI measurement.
diff --git a/examples/LoRandom/LoRandom.ino b/examples/LoRandom/LoRandom.ino
new file mode 100644
index 0000000..2ffd8d8
--- /dev/null
+++ b/examples/LoRandom/LoRandom.ino
@@ -0,0 +1,66 @@
+/********************************************************************
+  LoRandomSeed
+
+  Example demonstrating how to generate random numbers using LoRa.
+
+  created 7 Sep 2020
+  by Kongduino
+  adapted by Andres Sabas
+***********************************************************************/
+
+#include <SPI.h>
+#include <LoRa.h>
+
+void setup() {
+  Serial.begin(9600);
+  while(!Serial);
+  Serial.print(F("\n\n\n[SX1276] Initializing ... "));
+  if (!LoRa.begin(868E6)) {
+    Serial.println("Starting LoRa failed!");
+    while (1);
+  }
+  Serial.print("Setting up LoRa ");
+  
+  LoRa.setTxPower(20, PA_OUTPUT_PA_BOOST_PIN);
+  LoRa.setPreambleLength(8);
+  LoRa.beginRandom();
+  Serial.println("End of setup\n\n");
+}
+
+void loop() {
+  byte randomBytes[256];
+  // We'll build a stock of random bytes for use in code
+  int randomIndex = 0;
+  unsigned int  i;
+  for (i = 0; i < 256; i++) {
+    int x = LoRa.random();
+    randomBytes[i] = x;
+  }
+  randomIndex = 0;
+  hexDump(randomBytes, 256);
+  delay(2000);
+}
+
+void hexDump(unsigned char *buf,  unsigned int  len) {
+  String s = "|", t = "| |";
+  Serial.println(F("  |.0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .a .b .c .d .e .f |"));
+  Serial.println(F("  +------------------------------------------------+ +----------------+"));
+  for ( unsigned int  i = 0; i < len; i += 16) {
+    for (int j = 0; j < 16; j++) {
+      if (i + j >= len) {
+        s = s + "   "; t = t + " ";
+      } else {
+        char c = buf[i + j];
+        if (c < 16) s = s + "0";
+        s = s + String(c, HEX) + " ";
+        if (c < 32 || c > 127) t = t + ".";
+        else t = t + (String(c));
+      }
+    }
+    int index = i / 16;
+    Serial.print(index, HEX); Serial.write('.');
+    Serial.println(s + t + "|");
+    s = "|"; t = "| |";
+  }
+  Serial.println(F("  +------------------------------------------------+ +----------------+"));
+}
\ No newline at end of file
diff --git a/keywords.txt b/keywords.txt
index 63e0e9a..5d3bde3 100644
--- a/keywords.txt
+++ b/keywords.txt
@@ -48,6 +48,7 @@ disableCrc	KEYWORD2
 enableInvertIQ	KEYWORD2
 disableInvertIQ	KEYWORD2
 
+beginRandom    KEYWORD2
 random	KEYWORD2
 setPins	KEYWORD2
 setSPIFrequency	KEYWORD2
diff --git a/src/LoRa.cpp b/src/LoRa.cpp
index 4396518..e69e089 100644
--- a/src/LoRa.cpp
+++ b/src/LoRa.cpp
@@ -412,6 +412,11 @@ void LoRaClass::sleep()
   writeRegister(REG_OP_MODE, MODE_LONG_RANGE_MODE | MODE_SLEEP);
 }
 
+void LoRaClass::continuousRxMode()
+{
+  writeRegister(REG_OP_MODE, 0x72);
+}
+
 void LoRaClass::setTxPower(int level, int outputPin)
 {
   if (PA_OUTPUT_RFO_PIN == outputPin) {
@@ -607,9 +612,21 @@ void LoRaClass::setOCP(uint8_t mA)
   writeRegister(REG_OCP, 0x20 | (0x1F & ocpTrim));
 }
 
+void LoRaClass::beginRandom() {
+  continuousRxMode();
+  setSignalBandwidth(125E3);
+  setCodingRate4(5);
+  setSpreadingFactor(7);
+}
+
 byte LoRaClass::random()
 {
-  return readRegister(REG_RSSI_WIDEBAND);
+  uint8_t x = 0;
+  for (uint8_t j = 0; j < 8; j++) {
+    x += (readRegister(REG_RSSI_WIDEBAND) & 0x01);
+    x = x << 1;
+  }
+  return x;
 }
 
 void LoRaClass::setPins(int ss, int reset, int dio0)
diff --git a/src/LoRa.h b/src/LoRa.h
index c1671c1..8860256 100644
--- a/src/LoRa.h
+++ b/src/LoRa.h
@@ -81,7 +81,8 @@ class LoRaClass : public Stream {
   // deprecated
   void crc() { enableCrc(); }
   void noCrc() { disableCrc(); }
-
+  
+  void beginRandom();
   byte random();
 
   void setPins(int ss = LORA_DEFAULT_SS_PIN, int reset = LORA_DEFAULT_RESET_PIN, int dio0 = LORA_DEFAULT_DIO0_PIN);
@@ -108,6 +109,8 @@ class LoRaClass : public Stream {
 
   static void onDio0Rise();
 
+  void continuousRxMode();
+
 private:
   SPISettings _spiSettings;
   SPIClass* _spi;