new pick(/obj/scroll, /obj/book, obj/sword) //etc...
It gives an error. I guess I can see that you can't use an argument with new but you can use new as one of the pick arguments as you will see. The next thing I did was this:
new( pick(/obj/scroll, /obj/book, obj/sword)) //etc...
It gave no error but it didn't work. So finally I did this:
pick(new/obj/scroll, new/obj/book, new/obj/sword) //etc...
and it worked!
I think also works, and doesn't produce a new object of each type, which is what you're doing in that third example.