diff --git a/lg/members_en.txt b/lg/members_en.txt
index 7867a3360314afccf9d69adb4a5c17a11e8218a1..84d2f38affce5880c8eaf082d95872f130c96fc6 100755
--- a/lg/members_en.txt
+++ b/lg/members_en.txt
@@ -65,4 +65,6 @@ CERT_AVAILABLE available
 MEMBERS members
 NEXT_YN Feign the following Y[n] landing
 MEMBER_FILTER search a member
-EXPIRE_TIME expiration datetime
\ No newline at end of file
+EXPIRE_TIME expiration datetime
+RANDOM_LIST Draw lots
+MEMBERS members
\ No newline at end of file
diff --git a/lg/members_fr.txt b/lg/members_fr.txt
index 0aaf6791553fdea23cb3dbe421402f035cdd245c..5a13228d6573952715dd1a83e33b72894b36d739 100755
--- a/lg/members_fr.txt
+++ b/lg/members_fr.txt
@@ -65,4 +65,6 @@ CERT_AVAILABLE disponible
 MEMBERS membres
 NEXT_YN Simuler le palier Y[n] suivant
 MEMBER_FILTER rechercher un membre
-EXPIRE_TIME date et heure d'expiration
\ No newline at end of file
+EXPIRE_TIME date et heure d'expiration
+RANDOM_LIST Tirer au sort
+MEMBERS membres
\ No newline at end of file
diff --git a/lib/randomInt.js b/lib/randomInt.js
new file mode 100644
index 0000000000000000000000000000000000000000..62d607c3d8c926bed68868dcdb8a7a43d14668d8
--- /dev/null
+++ b/lib/randomInt.js
@@ -0,0 +1,3 @@
+module.exports = function randomInt (low, high) {
+    return Math.floor(Math.random() * (high - low) + low);
+}
diff --git a/routes/members.js b/routes/members.js
index 7148b063a2ca870d5473bfe3f51a3ed2d41cc8a5..4ce4ba19d30e9debbabf9ea7886465749eee289a 100755
--- a/routes/members.js
+++ b/routes/members.js
@@ -4,6 +4,7 @@ const co = require('co')
 
 const constants = require(__dirname + '/../lib/constants')
 
+const randomInt = require(__dirname + '/../lib/randomInt')
 const timestampToDatetime = require(__dirname + '/../lib/timestampToDatetime')
 const membersQuality = require(__dirname + '/tools/membersQuality')
 
@@ -68,6 +69,8 @@ module.exports = (req, res, next) => co(function *() {
 	var centrality = req.query.centrality || "no"; // Valeur par défaut
 	var format = req.query.format || 'HTML'; // Valeur par défaut
 	const nextYn = (req.query.nextYn=="yes") ? "yes":"no";
+	const randomList = (req.query.randomList=="yes") ? "yes":"no";
+	const numberOfRandomMembers = req.query.randomCounts || 10
 
 	// Vérifier la valeur de nextYn dans le cache
 	let lastUpgradeTimeDatas = membersQuality(-1);
@@ -75,10 +78,10 @@ module.exports = (req, res, next) => co(function *() {
 	if (lastUpgradeTimeDatas > 0 && dSenCache > dSen) { previousNextYn=="yes"; }
     
     // Alimenter wotb avec la toile actuelle
-		const wotbInstance = duniterServer.dal.wotb;
+	const wotbInstance = duniterServer.dal.wotb;
 		
-		// Vérifier si le cache doit être Réinitialiser
-		let reinitCache = (Math.floor(Date.now() / 1000) > (membersLastUptime + constants.MIN_MEMBERS_UPDATE_FREQ));
+	// Vérifier si le cache doit être Réinitialiser
+	let reinitCache = (Math.floor(Date.now() / 1000) > (membersLastUptime + constants.MIN_MEMBERS_UPDATE_FREQ));
 		
 		// Si changement de conditions, alors forcer le rechargement du cache s'il n'est pas, vérouillé, sinon forcer les conditions à celles en mémoire
 		if (previousMode != mode || previousCentrality != centrality || previousNextYn != nextYn)
@@ -153,6 +156,19 @@ module.exports = (req, res, next) => co(function *() {
     
 			// Récupérer la liste des identités ayant actuellement le statut de membre
 			membersList = yield duniterServer.dal.peerDAL.query('SELECT `uid`,`pub`,`member`,`written_on`,`wotb_id` FROM i_index WHERE `member`=1');
+
+			if (randomList == "yes") {
+				// Tirer au sort randomCounts membres
+				const maxLengthRandomMembers = Math.min(numberOfRandomMembers,membersList.length)
+				let randomMembers = []
+				while (randomMembers.length < maxLengthRandomMembers) {
+					const randomInt_ = randomInt(0, membersList.length)
+					if (randomMembers.indexOf(membersList[randomInt_].uid) == -1) {
+						randomMembers.push(membersList[randomInt_])
+					}
+				}
+				membersList = randomMembers
+			}
     
 			// Récupérer pour chaque identité, le numéro du block d'écriture du dernier membership
 			// Ainsi que la première ou dernière certification
@@ -560,6 +576,7 @@ module.exports = (req, res, next) => co(function *() {
 				// get parameters
         		days, mode, sort_by, order,
 				pendingSigs, centrality, nextYn,
+				numberOfRandomMembers, randomList,
 				
 				// page data
         		currentBlockchainTimestamp,
diff --git a/views/members.html b/views/members.html
index 53f9abc55f894a82e6310c6ec7c21f36d4c49403..de3c64ee2066d8dc646a2acb0c328ddadd0005e9 100755
--- a/views/members.html
+++ b/views/members.html
@@ -47,6 +47,8 @@ ${printMenu(MENU_LANG, help, "MEMBERS")}
 <input type="checkbox" name="pendingSigs" value="yes" ${pendingSigs == 'yes' ? 'checked' : ''}>${LANG["CHECKBOX_PENDING_SIGS"]}.<br>
 <input type="checkbox" name="mode" value="emitted" ${mode == 'emitted' ? 'checked' : ''}>${LANG["CHECKBOX_MODE_SIG"]}.<br>
 <input type="checkbox" name="nextYn" value="yes" ${nextYn == 'yes' ? 'checked' : ''}> ${LANG["NEXT_YN"]}<br>
+<input type="checkbox" name="randomList" value="yes" ${randomList == 'yes' ? 'checked' : ''}> ${LANG["RANDOM_LIST"]} 
+<input type="number" name="randomCounts" value="${numberOfRandomMembers}"/> ${LANG["MEMBERS"]}.<br>
 <hr>
 
 <!-- Afficher la légende et l'aide -->