I am going to suggest using SugarCube as it has a built-in pluck() function which you can use to randomly extract an element from an Array. I would use v2.18.0 because the 1.x series is not longer being actively developed.
1. Initialising the list of potential random Passages.
To help automate the process I would assign a Passage Tag (i'm using random) to each of the Passages to be included in the Array story variable (named $randoms), then use code like the following within the StoryInit special passage to populate the array,
/% Initialise the array being used to story the list of random Passages. %/
<<set $randoms to []>>
/% Add the name of each of the random Passages to the array by searching for all Passages in the story tagged as 'random'. %/
<<set _list to Story.lookup("tags", "random")>>
<<for _i to 0, _len to _list.length; _i lt _len; _i++>>
<<run $randoms.push(_list[_i]['title'])>>
<</for>>
... if uses the Story.lookup() function to find the list of tagged Passages and the <<for>> macro to loop that list so the passage's title (name) can be added to the array.
2. Displaying a link that targets either a random passage or the Conclusion passage.
I would use the PassageFooter special passage to display the link at the end of the current passage's contents using code like the following, this same code could instead be stored in a secondary passage that you manually <<display>> within each of your story's Passages.
<<if passage() is not "Conclusion">>\
<<if $randoms.length gt 0>>\
<<set _next to $randoms.pluck()>>\
<<else>>\
<<set _next to "Conclusion">>\
<</if>>\
<<link "Next" _next>><</link>>
<</if>>\
... it uses the passage() function to determine the title/name of the current Passage being shown, the pluck() function to randomly obtain the name of the next random passage if there are any that have not been shown yet, and a <<link>> macro to display the link. The above also uses Line Continuations to suppress unwanted line-breaks.
3. Other passages.
The above code assumes you have a start passage (named whatever you like), a Conclusion passage which you can rename as long as you also change the second <<set>> macro in the PassageFooter, and finally some passages that have been assigned the random passage tag. (which you can also rename as long as you also update the Story.lookup call in the StoryInit passage.