Best way to learn how do specific pin or node apperence, is to find node that have it and search for it’s decleration in engine source code
Most common example of ref pin input is randomization nodes that use random streams:
Then you go to GitHub, paste the name of node, remove spaces and search, it should find the function you searching for. If not, which usally happens when node has custom name set, then add spaces back and put name between " ". In this case, job is easier as doc hints that function is in Kismet Math Library which is common class contain static math nodes for blueprint
https://github.com/EpicGames/UnrealEngine/blob/8a80b5541f69a79abf5855668f39e1d643717600/Engine/Source/Runtime/Engine/Classes/Kismet/KismetMathLibrary.h
In there we have this out function that we picked:
/** Return a random integer between Min and Max (>= Min and <= Max) */
UFUNCTION(BlueprintPure, Category="Math|Random")
static int32 RandomIntegerInRangeFromStream(int32 Min, int32 Max, const FRandomStream& Stream);
And as we can deduce, you need too add “const” to make input refrence, which makes sence as you can’t use that refrence as a output if you can’t modify it. But if you look below there even way to do ref input which you can modify
/** Set the seed of a random stream to a specific number */
UFUNCTION(BlueprintCallable, Category="Math|Random")
static void SetRandomStreamSeed(UPARAM(ref) FRandomStream& Stream, int32 NewSeed);
You put UPARAM(ref) before ref argument and i don’t need to lock refrence with const and i can now modify that refrence
To tell you the truth i didn’t know how to do that either, but as you can see with this method we both learned it how to do it 