diff --git a/Cargo.toml b/Cargo.toml
index b0ac1af629d8883129f098db231359bb33792fb2..93abfbc20f4b04da6d85122a0dead9c8b656c7f3 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -29,8 +29,9 @@ zeroize = { version = "1.1.0", features = ["zeroize_derive"] }
 bincode = "1.2.0"
 
 [features]
-default = ["dewif", "ser"]
+default = ["dewif", "rand", "ser"]
 
 aes256 = ["aes"]
 dewif = ["aes256", "arrayvec"]
+rand = []
 ser = ["serde"]
diff --git a/src/hashs/mod.rs b/src/hashs/mod.rs
index 8268083162db83d6ccd68cc136bb7803ace80082..a89af43bc0df51c69074d4e06dc2086748453247 100644
--- a/src/hashs/mod.rs
+++ b/src/hashs/mod.rs
@@ -16,6 +16,7 @@
 //! Provide wrappers for cryptographic hashs
 
 use crate::bases::*;
+#[cfg(feature = "rand")]
 use crate::rand::UnspecifiedRandError;
 use ring::digest;
 #[cfg(feature = "ser")]
@@ -57,6 +58,7 @@ impl Hash {
     /// Hash size (in bytes).
     pub const SIZE_IN_BYTES: usize = 32;
 
+    #[cfg(feature = "rand")]
     /// Generate a random Hash
     #[inline]
     pub fn random() -> Result<Self, UnspecifiedRandError> {
@@ -102,6 +104,7 @@ mod tests {
 
     use super::*;
 
+    #[cfg(feature = "rand")]
     #[test]
     fn test_hash_random() {
         let hash1 = Hash::random();
diff --git a/src/keys/ed25519.rs b/src/keys/ed25519.rs
index c2697484d3b4e660e2959aa20ed3eef8d185ad92..e6690a0fb09a94fcee1796a9d55f55ce198e056b 100644
--- a/src/keys/ed25519.rs
+++ b/src/keys/ed25519.rs
@@ -23,6 +23,7 @@ use super::PublicKey as PublicKeyMethods;
 use super::{PubkeyFromBytesError, SigError};
 use crate::bases::b58::{bytes_to_str_base58, ToBase58};
 use crate::bases::*;
+#[cfg(feature = "rand")]
 use crate::rand::UnspecifiedRandError;
 use crate::seeds::Seed32;
 use base64;
@@ -278,6 +279,7 @@ pub struct Ed25519KeyPair {
 }
 
 impl Ed25519KeyPair {
+    #[cfg(feature = "rand")]
     /// Generate random keypair
     pub fn generate_random() -> Result<Self, UnspecifiedRandError> {
         Ok(KeyPairFromSeed32Generator::generate(Seed32::random()?))
diff --git a/src/lib.rs b/src/lib.rs
index 7793628d893183004230c56202c455929a0fc965..0eeb19e164dbcb34e017e1132ef862af533df82f 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -38,5 +38,6 @@ pub mod bases;
 pub mod dewif;
 pub mod hashs;
 pub mod keys;
+#[cfg(feature = "rand")]
 pub mod rand;
 pub mod seeds;
diff --git a/src/seeds.rs b/src/seeds.rs
index 089c26c73df2c0bfb4df47e30fe3e61b12ead6bc..c94b9cab9d82f4d9c1e3c6b9e9335339050ab3b4 100644
--- a/src/seeds.rs
+++ b/src/seeds.rs
@@ -17,6 +17,7 @@
 
 use crate::bases::b58::{bytes_to_str_base58, ToBase58};
 use crate::bases::*;
+#[cfg(feature = "rand")]
 use crate::rand::UnspecifiedRandError;
 #[cfg(feature = "ser")]
 use serde::{Deserialize, Serialize};
@@ -64,6 +65,7 @@ impl Seed32 {
     pub fn from_base58(base58_str: &str) -> Result<Self, BaseConvertionError> {
         Ok(Seed32::new(b58::str_base58_to_32bytes(base58_str)?.0))
     }
+    #[cfg(feature = "rand")]
     #[inline]
     /// Generate random seed
     pub fn random() -> Result<Seed32, UnspecifiedRandError> {
@@ -75,8 +77,10 @@ impl Seed32 {
 #[cfg(test)]
 mod tests {
 
+    #[cfg(feature = "rand")]
     use super::*;
 
+    #[cfg(feature = "rand")]
     #[test]
     fn test_gen_random_seed() {
         assert_ne!(Seed32::random(), Seed32::random());